From 5eed164aa73dcf5ee66061b603eccb2e4925dcdc Mon Sep 17 00:00:00 2001 From: Pavel Stupnikov Date: Thu, 19 Mar 2015 14:32:08 +0300 Subject: [PATCH 1/4] added .hgignore --HG-- branch : openttd --- .hgignore | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .hgignore diff --git a/.hgignore b/.hgignore new file mode 100644 index 0000000000..b6abbe76f4 --- /dev/null +++ b/.hgignore @@ -0,0 +1,8 @@ +syntax: glob +objs +bin +Makefile* +config.* +media/openttd.desktop +recordings/ +stats*/* From 46e74a9a058505c9c91b1187aa5c199326777b4f Mon Sep 17 00:00:00 2001 From: Pavel Stupnikov Date: Thu, 19 Mar 2015 14:33:13 +0300 Subject: [PATCH 2/4] openttd 1.5-rc1 --HG-- branch : openttd --- bin/baseset/opntitle.dat | Bin 138710 -> 166748 bytes changelog.txt | 61 +- known-bugs.txt | 4 +- os/debian/changelog | 6 + os/windows/installer/install.nsi | 4 +- readme.txt | 4 +- src/ai/ai_gui.cpp | 4 +- src/bridge_gui.cpp | 3 - src/cheat_gui.cpp | 4 +- src/fontcache.cpp | 14 +- src/gfx.cpp | 9 +- src/lang/afrikaans.txt | 19 +- src/lang/arabic_egypt.txt | 3 +- src/lang/basque.txt | 3 +- src/lang/belarusian.txt | 3 +- src/lang/brazilian_portuguese.txt | 3 +- src/lang/bulgarian.txt | 3 +- src/lang/catalan.txt | 61 +- src/lang/croatian.txt | 7 +- src/lang/czech.txt | 3 +- src/lang/danish.txt | 3 +- src/lang/dutch.txt | 7 +- src/lang/english.txt | 8 +- src/lang/english_AU.txt | 3 +- src/lang/english_US.txt | 3 +- src/lang/esperanto.txt | 3 +- src/lang/estonian.txt | 3 +- src/lang/finnish.txt | 7 +- src/lang/french.txt | 7 +- src/lang/gaelic.txt | 7 +- src/lang/galician.txt | 3 +- src/lang/german.txt | 3 +- src/lang/greek.txt | 3 +- src/lang/hebrew.txt | 25 +- src/lang/hungarian.txt | 3 +- src/lang/icelandic.txt | 3 +- src/lang/indonesian.txt | 3 +- src/lang/irish.txt | 3 +- src/lang/italian.txt | 9 +- src/lang/japanese.txt | 3 +- src/lang/korean.txt | 55 +- src/lang/latvian.txt | 3 +- src/lang/lithuanian.txt | 7 +- src/lang/luxembourgish.txt | 7 +- src/lang/malay.txt | 3 +- src/lang/norwegian_bokmal.txt | 7 +- src/lang/norwegian_nynorsk.txt | 3 +- src/lang/polish.txt | 7 +- src/lang/portuguese.txt | 3 +- src/lang/romanian.txt | 34 +- src/lang/russian.txt | 7 +- src/lang/serbian.txt | 3 +- src/lang/simplified_chinese.txt | 3 +- src/lang/slovak.txt | 22 +- src/lang/slovenian.txt | 3 +- src/lang/spanish.txt | 29 +- src/lang/swedish.txt | 3 +- src/lang/tamil.txt | 12 +- src/lang/thai.txt | 3 +- src/lang/traditional_chinese.txt | 3 +- src/lang/turkish.txt | 3 +- src/lang/ukrainian.txt | 3 +- src/lang/unfinished/frisian.txt | 3 +- src/lang/unfinished/persian.txt | 3 +- src/lang/vietnamese.txt | 3 +- src/lang/welsh.txt | 3 +- src/linkgraph/linkgraphjob.cpp | 9 +- src/linkgraph/linkgraphjob.h | 4 +- src/linkgraph/linkgraphschedule.cpp | 34 +- src/linkgraph/linkgraphschedule.h | 4 +- src/linkgraph/mcf.cpp | 10 +- src/misc.cpp | 1 - src/misc_gui.cpp | 3 +- src/newgrf_debug_gui.cpp | 66 ++- src/os/windows/win32.h | 4 +- src/rail_cmd.cpp | 17 +- src/rail_gui.cpp | 131 +---- src/road_cmd.cpp | 19 +- src/roadveh_cmd.cpp | 7 +- src/saveload/linkgraph_sl.cpp | 10 +- src/script/api/ai_changelog.hpp | 4 +- src/script/api/game/game_window.hpp.sq | 7 +- src/script/api/game_changelog.hpp | 4 +- src/script/api/script_window.hpp | 7 +- src/station.cpp | 4 +- src/station_base.h | 4 +- src/station_cmd.cpp | 17 +- src/table/object_land.h | 4 +- src/tilehighlight_func.h | 5 - src/tilehighlight_type.h | 6 - src/toolbar_gui.cpp | 4 +- src/townname.cpp | 4 +- src/viewport.cpp | 755 +++++-------------------- src/viewport_func.h | 2 +- src/widgets/newgrf_debug_widget.h | 30 +- src/widgets/rail_widget.h | 1 - src/window.cpp | 15 +- 97 files changed, 647 insertions(+), 1107 deletions(-) diff --git a/bin/baseset/opntitle.dat b/bin/baseset/opntitle.dat index 264aaff60b5e58cad978bd390ad459da6cc06808..730c176e0c7adf96426dc7e5bf04a07359fd6f08 100644 GIT binary patch literal 166748 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%0D`7 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≷L`8DkBNpqd}x8JOsr%lmF`|QB* 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 literal 138710 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%0AW(A5mRI`K#>0oLR6rC#<<~7E8cCF)i~K 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 RwY!6F{P^^ragp^+Jpc%4;iCWm diff --git a/changelog.txt b/changelog.txt index 4fa211c9f9..2366ca6d5c 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,30 +1,41 @@ +1.5.0-RC1 (2015-03-18) +------------------------------------------------------------------------ +- Feature: [NewGRF] Display relative offset changes in the sprite aligner [FS#6236] (r27174) +- Fix: Original road vehicle acceleration crashed for vehicles taking over [FS#6255] (r27190) +- Fix: GCC 5 compilation (r27185, r27183) +- Fix: Data race due to lazy initialisation of objects [FS#5969] (r27178) +- Fix: Compilation with MinGW64 (r27176) +- Fix: Use the regular clipping functions in the sprite aligner instead of some magic [FS#6237] (r27173) +- Fix: Windows randomly drops SetCursorPos calls, breaking the RMB-scrolling [FS#6238] (r27172) + + 1.5.0-beta2 (2015-02-24) ------------------------------------------------------------------------ -- Feature: [NoGo] Game scripts can point to a location, station, industry, or town when publishing news. (r27164) -- Feature: Allow changing max heightlevel in scenario editor. (r27151) -- Feature: Make use of both rocky tile sets from the base graphics. (r27117) -- Change: Scale (non-custom) default window sizes according to GUI zoom. (r27147) -- Change: Make statusbar and chat-entry window use the same width as the toolbar. (r27146) -- Change: The chatbox-width setting now uses percent of screen width instead of pixels. (r27144) -- Change: [NewGRF] Interpret negative positions in industry layouts depending on GRF version. (r27138) -- Fix: [SDL, Windows] Right-mouse-button scrolling scrolled/jumped too far, when OpenTTD lagged during mouse event processing. (r27167) -- Fix: Toolbars were not invalidated when changing max-vehicles settings. [FS#6204] (r27163) -- Fix: Tile selection was drawn outside of map in some cases. [FS#6208] (r27162) -- Fix: Reimplement the viewport drawing algorithm. [FS#6156] [FS#6206] (r27161) -- Fix: Issues with smallmap and viewport coordinates and transformations. (r27160, r27159, r27158) -- Fix: Mark bridge middle tiles dirty when building/removing/changing bridges. (r27157) -- Fix: Rounding and unit-conversion inconsistencies in calls to MarkAllViewportsDirty. (r27148) -- Fix: Oilrig empty-tile checks were incorrect due to wrong TileIndexDiff->TileIndexDiffC conversion. (r27137) -- Fix: Misalignment in generate world window in case of small fonts. (r27135) -- Fix: Dragging of free wagons in depot failed with GUI zoom. (r27133) -- Fix: Reduce memory footprint of map array by shuffling its members. [FS#6218] (r27132, r27126) -- Fix: Dropdown- and tooltip-windows should not steal the focus. (r27131) -- Fix: [NewGRF] Action 7/9 condition 0A failed for present, but disabled, NewGRF. (r27119) -- Fix: Road vehicles could not reverse to be sent to depots when the following tile has the right type to run on, but could not be entered. [FS#6183] (r27107) -- Fix: Use the actual max speed of the vehicle in front when determining if a RV can overtake. [FS#6176] (r27106) -- Fix: grow_counter was not properly bounded by growth_rate, but by some other value used to calculate growth_rate. [FS#6195] (r27105) -- Fix: [Script] Support 64 bits integers in ScriptLists. [FS#6194] (r27104) -- Fix: [Script] Money values would end up wrong in strings when outside the bounds of a 32 bits integer. [FS#6194] (r27102) +- Feature: [NoGo] Game scripts can point to a location, station, industry, or town when publishing news (r27164) +- Feature: Allow changing max heightlevel in scenario editor (r27151) +- Feature: Make use of both rocky tile sets from the base graphics (r27117) +- Change: Scale (non-custom) default window sizes according to GUI zoom (r27147) +- Change: Make statusbar and chat-entry window use the same width as the toolbar (r27146) +- Change: The chatbox-width setting now uses percent of screen width instead of pixels (r27144) +- Change: [NewGRF] Interpret negative positions in industry layouts depending on GRF version (r27138) +- Fix: [SDL, Windows] Right-mouse-button scrolling scrolled/jumped too far, when OpenTTD lagged during mouse event processing (r27167) +- Fix: Toolbars were not invalidated when changing max-vehicles settings [FS#6204] (r27163) +- Fix: Tile selection was drawn outside of map in some cases [FS#6208] (r27162) +- Fix: Reimplement the viewport drawing algorithm [FS#6156] [FS#6206] (r27161) +- Fix: Issues with smallmap and viewport coordinates and transformations (r27160, r27159, r27158) +- Fix: Mark bridge middle tiles dirty when building/removing/changing bridges (r27157) +- Fix: Rounding and unit-conversion inconsistencies in calls to MarkAllViewportsDirty (r27148) +- Fix: Oilrig empty-tile checks were incorrect due to wrong TileIndexDiff->TileIndexDiffC conversion (r27137) +- Fix: Misalignment in generate world window in case of small fonts (r27135) +- Fix: Dragging of free wagons in depot failed with GUI zoom (r27133) +- Fix: Reduce memory footprint of map array by shuffling its members [FS#6218] (r27132, r27126) +- Fix: Dropdown- and tooltip-windows should not steal the focus (r27131) +- Fix: [NewGRF] Action 7/9 condition 0A failed for present, but disabled, NewGRF (r27119) +- Fix: Road vehicles could not reverse to be sent to depots when the following tile has the right type to run on, but could not be entered [FS#6183] (r27107) +- Fix: Use the actual max speed of the vehicle in front when determining if a RV can overtake [FS#6176] (r27106) +- Fix: grow_counter was not properly bounded by growth_rate, but by some other value used to calculate growth_rate [FS#6195] (r27105) +- Fix: [Script] Support 64 bits integers in ScriptLists [FS#6194] (r27104) +- Fix: [Script] Money values would end up wrong in strings when outside the bounds of a 32 bits integer [FS#6194] (r27102) 1.5.0-beta1 (2014-12-24) diff --git a/known-bugs.txt b/known-bugs.txt index 34aca33002..832c23d8a0 100644 --- a/known-bugs.txt +++ b/known-bugs.txt @@ -1,6 +1,6 @@ OpenTTD's known bugs -Last updated: 2015-02-24 -Release version: 1.5.0-beta2 +Last updated: 2015-03-18 +Release version: 1.5.0-RC1 ------------------------------------------------------------------------ diff --git a/os/debian/changelog b/os/debian/changelog index d56400af01..29ae849a4e 100644 --- a/os/debian/changelog +++ b/os/debian/changelog @@ -1,3 +1,9 @@ +openttd (1.5.0~RC1-0) unstable; urgency=low + + * New upstream release 1.5.0-RC1 + + -- OpenTTD Wed, 18 Mar 2015 21:00:00 +0100 + openttd (1.5.0~beta2-0) unstable; urgency=low * New upstream release 1.5.0-beta2 diff --git a/os/windows/installer/install.nsi b/os/windows/installer/install.nsi index bc1e422fba..b9fb8ede16 100644 --- a/os/windows/installer/install.nsi +++ b/os/windows/installer/install.nsi @@ -2,8 +2,8 @@ !define APPV_MAJOR 1 !define APPV_MINOR 5 !define APPV_MAINT 0 -!define APPV_BUILD 1 -!define APPV_EXTRA "-beta2" +!define APPV_BUILD 2 +!define APPV_EXTRA "-RC1" !define APPNAME "OpenTTD" ; Define application name !define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version diff --git a/readme.txt b/readme.txt index 79420b978d..4da3cecf05 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ -Last updated: 2015-02-24 -Release version: 1.5.0-beta2 +Last updated: 2015-03-18 +Release version: 1.5.0-RC1 ------------------------------------------------------------------------ diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index f90887bd5d..b854d2e2af 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: ai_gui.cpp 26954 2014-10-04 18:19:22Z peter1138 $ */ +/* $Id: ai_gui.cpp 27187 2015-03-15 12:19:58Z frosch $ */ /* * This file is part of OpenTTD. @@ -970,7 +970,7 @@ struct AIDebugWindow : public Window { static const int top_offset; ///< Offset of the text at the top of the WID_AID_LOG_PANEL. static const int bottom_offset; ///< Offset of the text at the bottom of the WID_AID_LOG_PANEL. - static const unsigned int MAX_BREAK_STR_STRING_LENGTH = 256; ///< Maximum length of the break string. + static const uint MAX_BREAK_STR_STRING_LENGTH = 256; ///< Maximum length of the break string. static CompanyID ai_debug_company; ///< The AI that is (was last) being debugged. int redraw_timer; ///< Timer for redrawing the window, otherwise it'll happen every tick. diff --git a/src/bridge_gui.cpp b/src/bridge_gui.cpp index 019768d23c..2e9657e322 100644 --- a/src/bridge_gui.cpp +++ b/src/bridge_gui.cpp @@ -24,7 +24,6 @@ #include "cmd_helper.h" #include "tunnelbridge_map.h" #include "road_gui.h" -#include "tilehighlight_func.h" #include "widgets/bridge_widget.h" @@ -73,8 +72,6 @@ void CcBuildBridge(const CommandCost &result, TileIndex end_tile, uint32 p1, uin DiagDirection start_direction = ReverseDiagDir(GetTunnelBridgeDirection(p1)); ConnectRoadToStructure(p1, start_direction); } - - StoreRailPlacementEndpoints(p1, end_tile, (TileX(p1) == TileX(end_tile)) ? TRACK_Y : TRACK_X, false); } /** Window class for handling the bridge-build GUI. */ diff --git a/src/cheat_gui.cpp b/src/cheat_gui.cpp index d368bb590f..5f9c0b7be5 100644 --- a/src/cheat_gui.cpp +++ b/src/cheat_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: cheat_gui.cpp 27151 2015-02-14 21:55:30Z frosch $ */ +/* $Id: cheat_gui.cpp 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -108,7 +108,7 @@ static int32 ClickChangeDateCheat(int32 p1, int32 p2) if (p1 == _cur_year) return _cur_year; Date new_date = ConvertYMDToDate(p1, ymd.month, ymd.day); - LinkGraphSchedule::Instance()->ShiftDates(new_date - _date); + LinkGraphSchedule::instance.ShiftDates(new_date - _date); SetDate(new_date, _date_fract); EnginesMonthlyLoop(); SetWindowDirty(WC_STATUS_BAR, 0); diff --git a/src/fontcache.cpp b/src/fontcache.cpp index ee378e3222..56ceda9324 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -1,4 +1,4 @@ -/* $Id: fontcache.cpp 27134 2015-02-01 20:54:24Z frosch $ */ +/* $Id: fontcache.cpp 27187 2015-03-15 12:19:58Z frosch $ */ /* * This file is part of OpenTTD. @@ -536,8 +536,8 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) aa = (slot->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY); /* Add 1 pixel for the shadow on the medium font. Our sprite must be at least 1x1 pixel */ - unsigned int width = max(1U, (unsigned int)slot->bitmap.width + (this->fs == FS_NORMAL)); - unsigned int height = max(1U, (unsigned int)slot->bitmap.rows + (this->fs == FS_NORMAL)); + uint width = max(1U, (uint)slot->bitmap.width + (this->fs == FS_NORMAL)); + uint height = max(1U, (uint)slot->bitmap.rows + (this->fs == FS_NORMAL)); /* Limit glyph size to prevent overflows later on. */ if (width > 256 || height > 256) usererror("Font glyph is too large"); @@ -553,8 +553,8 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) /* Draw shadow for medium size */ if (this->fs == FS_NORMAL && !aa) { - for (unsigned int y = 0; y < (unsigned int)slot->bitmap.rows; y++) { - for (unsigned int x = 0; x < (unsigned int)slot->bitmap.width; x++) { + for (uint y = 0; y < (uint)slot->bitmap.rows; y++) { + for (uint x = 0; x < (uint)slot->bitmap.width; x++) { if (aa ? (slot->bitmap.buffer[x + y * slot->bitmap.pitch] > 0) : HasBit(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) { sprite.data[1 + x + (1 + y) * sprite.width].m = SHADOW_COLOUR; sprite.data[1 + x + (1 + y) * sprite.width].a = aa ? slot->bitmap.buffer[x + y * slot->bitmap.pitch] : 0xFF; @@ -563,8 +563,8 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) } } - for (unsigned int y = 0; y < (unsigned int)slot->bitmap.rows; y++) { - for (unsigned int x = 0; x < (unsigned int)slot->bitmap.width; x++) { + for (uint y = 0; y < (uint)slot->bitmap.rows; y++) { + for (uint x = 0; x < (uint)slot->bitmap.width; x++) { if (aa ? (slot->bitmap.buffer[x + y * slot->bitmap.pitch] > 0) : HasBit(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) { sprite.data[x + y * sprite.width].m = FACE_COLOUR; sprite.data[x + y * sprite.width].a = aa ? slot->bitmap.buffer[x + y * slot->bitmap.pitch] : 0xFF; diff --git a/src/gfx.cpp b/src/gfx.cpp index a8079d839d..0f261ca072 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -1,4 +1,4 @@ -/* $Id: gfx.cpp 27167 2015-02-22 23:06:45Z frosch $ */ +/* $Id: gfx.cpp 27172 2015-02-28 17:13:07Z frosch $ */ /* * This file is part of OpenTTD. @@ -1636,8 +1636,11 @@ bool CursorVars::UpdateCursorPosition(int x, int y, bool queued_warp) bool need_warp = false; if (this->fix_at) { - if (!this->queued_warp && (this->delta.x != 0 || this->delta.y != 0)) { - /* Trigger warp. */ + if (this->delta.x != 0 || this->delta.y != 0) { + /* Trigger warp. + * Note: We also trigger warping again, if there is already a pending warp. + * This makes it more tolerant about the OS or other software inbetween + * botchering the warp. */ this->queued_warp = queued_warp; need_warp = true; } diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index d82e4a5874..c9720ef567 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -11,7 +11,7 @@ ##gender male -# $Id: afrikaans.txt 27136 2015-02-05 17:45:18Z translators $ +# $Id: afrikaans.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -799,7 +799,7 @@ STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLAC STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Olie raffinadery het ontplof naby {TOWN}! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}fabriek vernietig in agterdogtig omstandighede naby {TOWN}! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'VVV' beland naby {TOWN}! -STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Kool myn bedaaring los spoor van vernietiging naby {TOWN}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Steenkool myn ongeluk los spoor van vernietiging naby {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Oorstroom!{}Te minste {COMMA} vermis, aangeneem dood na beduidende oorstroom! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Vervoer maatsappy in moelikheid! @@ -827,7 +827,7 @@ STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLAC STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Insinking Oor!{}{}Oplewing in sake gee vertroue na nywerhede as ekonomie versterk! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} vermeerder produksie! -STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nuwe kool laag gevind by {INDUSTRY}!{}Produksie is verwag om te verdubbel! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}Nuwe steenkool laag gevind by {INDUSTRY}!{}Produksie word voorspel dat dit sal verdubbel! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nuwe olie reserwes gevind by {INDUSTRY}!{}Produksie is verwag om te verdubbel! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Verbeterde boerdery metodes by {INDUSTRY} sal produksie verdubbel! STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} produksie by {INDUSTRY} vermeerder {COMMA}%! @@ -1048,11 +1048,11 @@ STR_NUM_CUSTOM :Pasmaak STR_NUM_CUSTOM_NUMBER :Pasmaak ({NUM}) STR_VARIETY_NONE :Geen -STR_VARIETY_VERY_LOW :Baaie Laag +STR_VARIETY_VERY_LOW :Baie Laag STR_VARIETY_LOW :Laag STR_VARIETY_MEDIUM :Middelmatig STR_VARIETY_HIGH :Hoog -STR_VARIETY_VERY_HIGH :Baaie Hoog +STR_VARIETY_VERY_HIGH :Baie Hoog STR_AI_SPEED_VERY_SLOW :Baie Stadig STR_AI_SPEED_SLOW :Stadig @@ -2880,7 +2880,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Vorige s STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Gaan na vorige normale sprite, en ignoreer enige pseudo/her-kleur/font sprite en spring terug na die einde STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Voorstelling van geselekteerde sprite. Die belyning word geignoreer waneer sprite geteken word STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Beweeg die sprite rond, verander die X en Y afwyking -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X afwyking: {NUM}, Y afwyking: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Relatiewe herstel +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Herstel die huidige relatiewe verplasing +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X verplasing: {NUM}, Y verplasing: {NUM} (Werklik) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X verplasing: {NUM}, Y verplasing: {NUM} (Relatief) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Kies sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Kies 'n sprite van enige plek op die skerm @@ -4683,7 +4686,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passasierswa STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Pos Wa -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Kool Trok +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Steenkool Trok STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Olie Tenkwa STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Lewende Hawe Wa STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Goedere Wa @@ -4715,7 +4718,7 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Foster MkII Sup STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bus STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bus -STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Kool Trok +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Balogh Steenkool Trok STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Uhl Kool Trok STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :DW Kool Trok STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :MPS Pos Trok diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 53fab994c2..fef522ac3e 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -10,7 +10,7 @@ ##grflangid 0x14 -# $Id: arabic_egypt.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: arabic_egypt.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2495,7 +2495,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}الع٠STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}نابع Ù„Ù„Ø¹ÙØ±ÙŠØªØ© الطبيعية التالية، تجاوز اي Ø¹ÙØ±ÙŠØªØ© Ù…ÙˆÙ‚ÙˆÙØ©/ مصبوغة/مخطوطة Ùˆ انهي ÙÙŠ البداية. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}عرض Ø§Ù„Ø¹ÙØ±ÙŠØªØ© المختارة حاليا. يتم تجاهل الموائمة عند رسم هذا Ø§Ù„Ø¹ÙØ±ÙŠØª. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}حرك Ø§Ù„Ø¹ÙØ±ÙŠØªØ© ÙÙŠ الجوار، غير الاحداثيات س ØŒ ص. -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}احداث س: {NUM}ØŒ احداث ص: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}اختر Ø¹ÙØ±ÙŠØªØ© STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}اختر Ø¹ÙØ±ÙŠØªØ© من اي مكان ÙÙŠ الشاشة. diff --git a/src/lang/basque.txt b/src/lang/basque.txt index e331d32a4a..80f67cde37 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -10,7 +10,7 @@ ##grflangid 0x21 -# $Id: basque.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: basque.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2725,7 +2725,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Aldez au STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Aurreko grafiko arruntera joan, pseudo/birkoloretu/grafiko tipoak desgaituz STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Orain aukeratutako grafikoaren aurkezpena. Alineazioa ez da kontua hartzen grafiko hau egiterakoan STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}"Sprit"-a mugitu inguruan, X eta Y-ren desplazamenduak aldatuz -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X desplazamendua {NUM}, Y desplazamendua: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}"Sprit"-a aukeratu STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pantaillako edozein lekutatik aukeratu "sprite" bat diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 5b89f25d17..9286805cd4 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -12,7 +12,7 @@ ##case m f n p nom gen dat acc abl pre -# $Id: belarusian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: belarusian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -3212,7 +3212,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}ÐŸÐ°Ð¿Ñ STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}ПерайÑьці да папÑÑ€ÑднÑга звычайнага Ñпрайта, прапуÑкаючы змÑнÑÑŽÑ‡Ñ‹Ñ ÐºÐ¾Ð»ÐµÑ€, шрыфтавыÑ, пÑÑўдаÑпрайты. Пераход з пачатку ÑьпіÑу да апошнÑга Ñпрайта. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}ПрадÑтаўленьне выбранага Ñпрайта. Выраўноўваньне не ўлічваецца пры прарыÑоўцы гÑтага Ñпрайта. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Рухайце Ñпрайт, зьмÑнÑючы зрушÑньне па X Ñ– па Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}ЗрушÑньне па X: {NUM}, зрушÑньне па Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Выбраць Ñпрайт STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}ÐбÑрыце любы Ñпрайт на Ñкране diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 403bf2fd96..8361001f46 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -11,7 +11,7 @@ ##gender m f -# $Id: brazilian_portuguese.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: brazilian_portuguese.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2868,7 +2868,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}"Sprite" STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Retorna ao "sprite" normal anterior, pulando quaisquer "sprites" falsos, recoloridos ou de fontes, e junta tudo do primeiro ao último STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representação do "sprite" atualmente selecionado. O alinhamento é ignorado ao desenhar esse "sprite" STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move o "sprite", alterando os offsets X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Escolher "sprite" STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Escolhe um "sprite" de qualquer lugar na tela diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 40cea3595d..75ed505a90 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -12,7 +12,7 @@ ##case m f n p -# $Id: bulgarian.txt 27122 2015-01-19 17:45:27Z translators $ +# $Id: bulgarian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2815,7 +2815,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Пред STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Продължи към предишен нормален sprite, ПропуÑкайки вÑички пÑевдо/прериÑувани/текÑтови sprite и ги облечи в ÐºÑ€Ð°Ñ STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Показване на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ sprite. Подредбата Ñе пренебрегва при риÑуването му. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}ПремеÑтване на sprite, променÑйки X и Y координатите -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X координата: {NUM}, Y координата: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Избери sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Избери sprite от Ñ†ÐµÐ»Ð¸Ñ ÐµÐºÑ€Ð°Ð½ diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 37847504b5..bdcdae6ec2 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -11,7 +11,7 @@ ##gender Masculin Femenin -# $Id: catalan.txt 27114 2015-01-06 17:45:49Z translators $ +# $Id: catalan.txt 27180 2015-03-10 17:47:16Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -250,10 +250,10 @@ STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Enderroca edificis, etc. en un quadre de terreny. Ctrl selecciona l'àrea en diagonal. Shift commuta construir/mostrar el cost estimat # Show engines button -STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Mostrar ocultats -STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Mostrar ocultats -STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Mostrar ocultats -STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Mostrar ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Mostra ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Mostra ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Mostra ocultats +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Mostra ocultats STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Activant aquest botó, també es mostraran els vehicles ferroviaris ocultats STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Activant aquest botó, també es mostraran els vehicles de carretera ocultats @@ -324,7 +324,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Mostra l STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Mostra la llista d'estacions de la companyia STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Mostra informació financera de la companyia STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Mostra informació general de la companyia -STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Mostra llibre +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Mostra llibre de partida STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Mostra llista d'objectius STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Mostra gràfics STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Mostra la taula de la lliga d'empreses @@ -1404,7 +1404,7 @@ STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra els temp STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Mostra l'arribada i la sortida als horaris: {STRING} STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostra als horaris l'arribada anticipadament i les hores de sortida STR_CONFIG_SETTING_QUICKGOTO :Creació ràpida d'ordres per a vehicles: {STRING} -STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pre-selecciona el botó 'Vés-hi' quan s'obri la finestra d'ordres +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Preselecciona el botó 'Vés a' quan s'obri la finestra d'ordres STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipus predeterminat de via (en nova partida/càrrega de partida): {STRING} STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipus de via a seleccionar després de començar o carregar una partida. 'El més antic disponible' selecciona el tipus de vies més antic disponible, 'El més modern disponible' selecciona el tipus de vies més modern, i 'El més utilitzat disponible' selecciona el tipus de vies que s'utilitzi més actualment STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :El més antic disponible @@ -2510,7 +2510,7 @@ STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Crear no STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Restableix paisatge STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Treure totes les propietats pertanyents a companyies del mapa -STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Restablir Paisatge +STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Restableix Paisatge STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Estàs segur que vols treure totes les propietats pertanyents a companyies? # Town generation window (SE) @@ -2874,24 +2874,27 @@ STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Paràmet STR_SPRITE_ALIGNER_CAPTION :{WHITE}Alineant sprite {COMMA} ({STRING}) STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sprite següent STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procedeix cap al següent sprite normal, saltant qualsevol sprite pseudo/recolor/font i passant de l'últim sprite al primer -STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Anar a l'sprite -STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Anar cap a l'sprite donat. Si l'sprite no és un sprite normal, procedir cap al següent sprite normal +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Vés a l'sprite +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Va cap a l'sprite donat. Si l'sprite no és un sprite normal, procedir cap al següent sprite normal STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite anterior STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Procedeix cap a l'sprite normal anterior, saltant qualsevol sprite pseudo/recolor/font i passant del primer sprite a l'últim STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representació de l'sprite seleccionat actualment. L'alineació s'ignora quan es dibuixa aquest sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mou l'sprite al voltant, canviant els desplaçaments en X i Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Desplaçament X: {NUM}, Desplaçament Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Restableix relatius +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Restableix els desplaçaments relatius actuals +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Desplaçament X: {NUM}, Desplaçament Y: {NUM} (Absolut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Desplaçament X: {NUM}, Desplaçament Y: {NUM} (Relatiu) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Agafa un sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Agafa un sprite de qualsevol lloc de la pantalla -STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Anar a l'sprite +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Vés a l'sprite # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} STR_NEWGRF_ERROR_MSG_WARNING :{RED}Alerta: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{STRING} STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fatal: {SILVER}{STRING} -STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Ha passat un error fatal de NewGRF: {}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}S'ha produït un error fatal de NewGRF: {}{STRING} STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} no funcionarà amb la versió de TTDPatch informada per OpenTTD STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} és per la versió {STRING} de TTD STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} està dissenyat per ser utilitzat amb {STRING} @@ -3083,8 +3086,8 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clica al servei per centrar la vista a la indústria/població. Ctrl+Clic obre una nova vista al lloc de la indústria/població # Story book window -STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Llibre -STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Llibre Global +STR_STORY_BOOK_CAPTION :{WHITE}Llibre de Partida de {COMPANY} +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Llibre Global de Partida STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pàgina {NUM} STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Salteu a una pàgina seleccionant-la en aquesta llista desplegable. @@ -3180,7 +3183,7 @@ STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Canvia e STR_EDIT_WAYPOINT_NAME :{WHITE}Edita nom del punt de pas # Finances window -STR_FINANCES_CAPTION :{WHITE}{COMPANY} Economia {BLACK}{COMPANY_NUM} +STR_FINANCES_CAPTION :{WHITE}Finances de {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Despeses/Ingressos STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Construcció @@ -3421,15 +3424,15 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Canvia e STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Canvia el nom del model de vaixell STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Canvia el nom del model d'avió -STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar -STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar -STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar -STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Ocultar +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Oculta +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Oculta +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Oculta +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Oculta -STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar -STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar -STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar -STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Mostrar +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Mostra +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Mostra +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Mostra +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Mostra STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna mostrar/ocultar el vehicle ferroviari STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Alterna mostrar/ocultar l'automòbil @@ -4649,7 +4652,7 @@ STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :{G=Masculin}Vag STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Elèctrica) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Elèctrica) STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 -STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :{G=Masculin}Vagó per Passatgers +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :{G=Masculin}Vagó de Passatgers STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :{G=Masculin}Vagó per Correu STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :{G=Masculin}Vagó per Carbó STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :{G=Masculin}Tanc de Petroli @@ -4681,7 +4684,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cíclope' STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Elèctrica) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Quimera' (Elèctrica) STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer -STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :{G=Masculin}Vagó per Passatgers +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :{G=Masculin}Vagó de Passatgers STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :{G=Masculin}Vagó per Correu STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :{G=Masculin}Vagó per Carbó STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :{G=Masculin}Tanc de Petroli @@ -4769,9 +4772,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :{G=Masculin}Cam STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :{G=Masculin}Camió per Sucre MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :{G=Masculin}Camió per Sucre Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :{G=Masculin}Camió per Sucre Wizzowow -STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :{G=Masculin}Camió per Refresc MightyMover -STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :{G=Masculin}Camió per Refresc Powernaught -STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :{G=Masculin}Camió per Refresc Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :{G=Masculin}Camió per Refrescs MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :{G=Masculin}Camió per Refrescs Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :{G=Masculin}Camió per Refrescs Wizzowow STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :{G=Masculin}Camió per Cotó de Sucre MightyMover STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :{G=Masculin}Camió per Cotó de Sucre Powernaught STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :{G=Masculin}Camió per Cotó de Sucre Wizzowow diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 93ddef4b47..9a9cf6308e 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -12,7 +12,7 @@ ##case nom gen dat aku vok lok ins -# $Id: croatian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: croatian.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2975,7 +2975,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Prethodn STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}OtiÄ‘i na prethodni normalni sprite, preskaÄući svaki pseudo/prebojani/font sprite i {BLACK}OtiÄ‘i na sljedeći normalni sprite, preskaÄući svaki pseudo/prebojani/font sprite i nakon dolaska na prvi prebaci na zadnjeg STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Prikaz trenutno odabranog spritea. Poravnjanje se ignorira kod crtanja ovog spritea. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pomakni sprite mijenjajući X i Y pomake -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X pomak: {NUM}, Y pomak: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}PoniÅ¡ti relativne +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}PoniÅ¡ti trenutne relativne pomake +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X pomak: {NUM}, Y pomak: {NUM} (Apsolutni) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X pomak: {NUM}, Y pomak: {NUM} (Relativni) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Odaberi sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Odaberi sprite od bilo gdje na ekranu diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 5bb7fe10f0..3fa60baf90 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -12,7 +12,7 @@ ##case nom gen dat acc voc loc ins big small -# $Id: czech.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: czech.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2972,7 +2972,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}PÅ™edcho STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Jít na pÅ™edchozí normální sprite (s grafikou), pÅ™iÄemž se pÅ™eskakují pseudo-/barvící/znakové sprity a pÅ™i dosažení zaÄátku se jde na konec STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Zobrazení vybraného spritu. Posun se pÅ™i jeho vykreslení neuvažoval STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Posouvání spritu zmÄ›nou souÅ™adnic X a Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Posun X: {NUM}, posun Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Vybrat sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Klikni na sprite kdekoli na obrazovce diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 3ff37a0f16..f77e49640c 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -10,7 +10,7 @@ ##grflangid 0x2d -# $Id: danish.txt 27114 2015-01-06 17:45:49Z translators $ +# $Id: danish.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Tidliger STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsæt til den forrige normal sprite, springe over nogen pseudo / recolour / FONT sprites og indpakning rundt fra den første sprite til det sidste STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Repræsentation af den markerede sprite. Justeringen ignoreres nÃ¥r denne sprite tegnes. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flyt spriten rundt for at ændre X- og Y-forskydningen -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-forskydning: {NUM}, Y-forskydning: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Vælg grafikelement STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Vælg en sprite fra et vilkÃ¥rligt sted pÃ¥ skærmen diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 6aa1e1e777..1fb13c5878 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -10,7 +10,7 @@ ##grflangid 0x1f -# $Id: dutch.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: dutch.txt 27177 2015-03-02 17:46:37Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Vorige a STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ga naar vorige normale afbeelding, sla alle pseudo/herkleur/lettertype afbeeldingen over en ga naar het einde bij het begin STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Voorbeeld van de huidige afbeelding. De uitlijning wordt genegeerd bij het weergeven van de afbeelding STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Afbeelding verplaatsen, dit verandert X en Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Herstel relatief +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Herstel de huidige relative offsets +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (Absoluut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (Relatief) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Kies afbeelding STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Kies een afbeelding van een willekeurige plaats op het scherm diff --git a/src/lang/english.txt b/src/lang/english.txt index 5977820bc1..fc5bea0008 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -10,7 +10,7 @@ ##grflangid 0x01 -# $Id: english.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: english.txt 27174 2015-03-01 08:17:14Z alberth $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2316,7 +2316,6 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Maglev Construc STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Build railway track. Ctrl toggles build/remove for railway construction. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Build railway track using the Autorail mode. Ctrl toggles build/remove for railway construction. Shift toggles building/showing cost estimate -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_POLYRAIL :{BLACK}Build railway track using the Polyline mode. Ctrl toggles build/remove for railway construction. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Build train depot (for buying and servicing trains). Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Convert rail to waypoint. Ctrl enables joining waypoints. Shift toggles building/showing cost estimate STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Build railway station. Ctrl enables joining stations. Shift toggles building/showing cost estimate @@ -2880,7 +2879,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the first sprite to the last STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Reset relative +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Reset the current relative offsets +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (Absolute) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (Relative) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pick sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pick a sprite from anywhere on the screen diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 564f38cc03..ec92439808 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -10,7 +10,7 @@ ##grflangid 0x3D -# $Id: english_AU.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: english_AU.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2848,7 +2848,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the begin STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pick sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pick a sprite from anywhere on the screen diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index f5ac4d7197..b586dfa2b2 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -10,7 +10,7 @@ ##grflangid 0x00 -# $Id: english_US.txt 27165 2015-02-22 17:45:17Z translators $ +# $Id: english_US.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Previous STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around from the first sprite to the last STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move the sprite around, changing the X and Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pick sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pick a sprite from anywhere on the screen diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index dd46a11944..4e074fa842 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -11,7 +11,7 @@ ##case n -# $Id: esperanto.txt 27116 2015-01-10 17:46:35Z translators $ +# $Id: esperanto.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2431,7 +2431,6 @@ STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Sekvanta STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Iru al bildeto STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}AntaÅ­a bildeto STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Movu ĉirkaÅ­ la bildeton, ÅanÄante la X kaj Y distancojn -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X distanco: {NUM}, Y distanco: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Elektu bildeto STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Elektu bildeton ie el la ekrano diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 8d1cf9c3f7..420536d181 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -11,7 +11,7 @@ ##case g in sü -# $Id: estonian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: estonian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2874,7 +2874,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Eelmine STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceed to the previous normal sprite, skipping any pseudo/recolour/font sprites and wrapping around at the begin STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation of the currently selected sprite. The alignment is ignored when drawing this sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Liiguta spraiti , muutes X ja Y tasakaalu -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X tasakaal: {NUM}, Y tasakaal: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Korja sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Korja sprite ükskõik kust ekraanil diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index f48b20d413..a71d6eb707 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -10,7 +10,7 @@ ##grflangid 0x35 -# $Id: finnish.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: finnish.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Edelinen STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Jatka edelliseen tavalliseen spriteen ja hyppää yli kaikki pseudo-/uudelleenväritetyt/fontti- spritet ja mene loppuun kun päästään ensimmäiseen STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Valitun spriten näyttö. Sijaintia ei huomioida spriteä piirrettäessä STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Liikuta spriteä ympäriinsä, muuttaen X- ja Y-sijainteja -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-sijainti: {NUM}, Y-sijainti: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Nollaa suhteelliset +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Nollaa suhteelliset erotukset +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X-erotus: {NUM}, Y-erotus: {NUM} (Absoluuttinen) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X-erotus: {NUM}, Y-erotus: {NUM} (Suhteellinen) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Valitse sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Valitse sprite ruudulta diff --git a/src/lang/french.txt b/src/lang/french.txt index 2d1d9bc201..508f5b4d21 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -11,7 +11,7 @@ ##gender m m2 f -# $Id: french.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: french.txt 27181 2015-03-11 17:46:24Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2880,7 +2880,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite p STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Se rendre au précédent sprite normal, en ignorant les pseudo-sprites et les sprites de recoloration et de police, et en bouclant du premier vers le dernier STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation du sprite actuellement séléctionné. L'alignement est ignoré lors de l'affichage de ce sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Déplacer le sprite, en modifiant les décalages X et Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Décalage X{NBSP}: {NUM}, décalage Y{NBSP}: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Réinitialiser les relatifs +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Réinitialiser les décalages relatifs courants +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Décalage X{NBSP}: {NUM}, décalage Y{NBSP}: {NUM} (Absolu) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Décalage X{NBSP}: {NUM}, décalage Y{NBSP}: {NUM} (Relatif) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Choisir un sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Choisir un des sprites affichés sur l'écran diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index e3f4a28457..61b60eb504 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -12,7 +12,7 @@ ##case nom gen dat voc -# $Id: gaelic.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: gaelic.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -3108,7 +3108,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}An sprit STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Lean air adhart dhan sprite àbhaisteach roimhe, a' gearradh leum thairis air sprites mas fhìor/ath-dhathaidh/crutha-chlò is a' pasgadh aig an toiseach gun sprite mu dheireadh STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Riochdachadh air an sprite a thagh thu an-dràsta. Thèid an co-thaobhadh a chur dhan dàrna taobh nuair a thèid an sprite a tharraing STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Gluais an sprite mu thimcheall, ag atharrachadh nam frith-àireamhan aig X is Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Frith-àireamh X: {NUM}, frith-àireamh Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Ath-shuidhich na frith-àireamhean dàimheach +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Ath-shuidhich na frith-àireamhean dàimheach làithreach +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}frith-àireamh X: {NUM}, frith-àireamh Y: {NUM} (absaloideach) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}frith-àireamh X: {NUM}, frith-àireamh Y: {NUM} (dàimheach) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Tagh sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Tagh sprite bho àite sam bith air an sgrìn diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 35309740a5..c5dcc6f240 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -11,7 +11,7 @@ ##gender m f n -# $Id: galician.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: galician.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2837,7 +2837,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite a STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ir ao sprite anterior, ignorando pseudosprites, sprites recoloreados e sprites de fonte, e volvendo a empezar ao chegar ao inicio STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representación do sprite seleccionado. A aliñación ignórase ao debuxar este sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Move-lo sprite, cambiando os valores de X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Desp. X: {NUM}, Desp. Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Seleccionar sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Seleccionar un sprite en calquera parte da pantalla diff --git a/src/lang/german.txt b/src/lang/german.txt index cae48a49e5..afa5dbe356 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -11,7 +11,7 @@ ##gender m w n p -# $Id: german.txt 27153 2015-02-15 17:45:47Z translators $ +# $Id: german.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2880,7 +2880,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Vorherig STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Gehe zum vorherigen normalen Sprite und überspringe alle Pseudo-, Recolour- und Schriftsprites (springt ggf. vom letzten bis zum ersten Sprite) STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Darstellung des aktuellen Sprites. Die Ausrichtung wird beim Zeichnen des Sprites ignoriert STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Bewege die Sprites und ändere dadurch die X- und Y-Offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-Offset: {NUM}, Y-Offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Sprite auswählen STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Wähle ein Sprite vom Bildschirm aus diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 0d9cac70af..488ea76669 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -12,7 +12,7 @@ ##case subs date geniki -# $Id: greek.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: greek.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2855,7 +2855,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}ΠÏοη STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}ΠÏοχώÏησε στο Ï€ÏοηγοÏμενο κανονικό sprite, Ï€ÏοσπεÏνώντας οποιαδήποτε ψευδό/επαναχÏωματιζόμενα/γÏαμματοσειÏάς sprites και ξαναεκτέλεσε τη διαδικασία από το Ï€Ïώτο sprite ως το τελεταίο STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Επανεμφάνιση του επιλεγμένου sprite. Η ευθυγÏάμμιση αγνοείται όταν γίνεται η σχεδίαση του sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Μετακίνηση του sprite Ï„ÏιγÏÏω, αλλάζοντας τα στίγματα Χ και Î¥ -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Στίγμα Χ: {NUM}, Στίγμα Î¥: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Επιλογή sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Επιλογή ενός sprite από οπουδήποτε στη οθόνη diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 23d5f0e552..f029231341 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -12,7 +12,7 @@ ##case singular plural gen -# $Id: hebrew.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: hebrew.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -109,7 +109,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK.plural :משק×ות מ # Quantity of cargo STR_QUANTITY_NOTHING : -STR_QUANTITY_PASSENGERS :{P 0 "נוסע " ""}{COMMA}{P "" " נוסעי×"} +STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}נוסע{P "" ×™×} STR_QUANTITY_COAL :{WEIGHT_LONG} של ×¤×—× STR_QUANTITY_MAIL :{P 0 "שק " ""}{COMMA}{P "" " שקי×"} של דו×ר STR_QUANTITY_OIL :{VOLUME_LONG} של נפט @@ -988,6 +988,8 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}רזלו STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}בחר ×ת רזולוציית המסך STR_GAME_OPTIONS_RESOLUTION_OTHER :×חר + + STR_GAME_OPTIONS_BASE_GRF :{BLACK}ערכת גרפיקה בסיסית STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}בחר בערכת גרפיקה בסיסית לשימוש STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{P 0 "קובץ " ""}{NUM}{P "" " קבצי×"} חסר{P 0 "" ×™×}/הושחט{P 0 "" ו} @@ -1088,7 +1090,7 @@ STR_CITY_APPROVAL_HOSTILE :עויין STR_WARNING_NO_SUITABLE_AI :{WHITE}×ין בינות מל×כותיות מת×ימות...{}ב×פשרותך להוריד בינות מל×כותיות בעזרת מערכת ×”'תוכן המקוון' -# Advanced settings window +# Settings tree window STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}מחרוזת סינון: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}הרחב הכל STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}×¦×ž×¦× ×”×›×œ @@ -1104,9 +1106,9 @@ STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :הגדרת חב STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}קטגוריה: STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}סוג: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}מגביל ×ת הרשימה להלן תוך שימוש בסינון שהוגדר מר×ש. -STR_CONFIG_SETTING_RESTRICT_BASIC :הגדרות בסיסיות -STR_CONFIG_SETTING_RESTRICT_ADVANCED :הגדרות מתקדמות -STR_CONFIG_SETTING_RESTRICT_ALL :הגדרות מומחה / כל ההגדרות +STR_CONFIG_SETTING_RESTRICT_BASIC :הגדרות בסיסיות (הצג רק הגדרות חשובות) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :הגדרות מתקדמות (הצג ×ת רוב ההגדרות) +STR_CONFIG_SETTING_RESTRICT_ALL :הגדרות מומחה (הצג ×ת כל ההגדרות, כולל הגדרות משונות) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :הגדרות בעלות ערך השונה מברירת המחדל STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :הגדרות בעלות ערך השונה מזה ×שר בהגדרות המשחק החדש שלך @@ -1277,7 +1279,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :משך הצגת STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :פרק הזמן להצגת הודעות שגי××” בחלון ×דו×. יש ×œ×©×™× ×œ×‘ ×›×™ כמה הודעות שגי××” (קריטיות) ×ינן נסגרות ×וטומטית ×חרי פרק זמן ×–×”, ××œ× ×™×© לסגור ×ותן ידנית STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{P 0 "שנייה " ""}{COMMA}{P "" " שניות"} STR_CONFIG_SETTING_HOVER_DELAY :הצג ×¨×ž×–×™× ×¦×¦×™×: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :השהייה ×˜×¨× ×”×¦×’×ª ×¨×ž×–×™× ×¦×¦×™× ×›×שר העכבר מרחף מעל חלק ממשק. לחלופין, ניתן לקשר ×¨×ž×–×™× ×¦×¦×™× ×œ×›×¤×ª×•×¨ העכבר הימני +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :השהייה ×˜×¨× ×”×¦×’×ª ×¨×ž×–×™× ×¦×¦×™× ×›×שר העכבר מרחף מעל חלק ממשק. לחלופין, ניתן לקשר ×¨×ž×–×™× ×¦×¦×™× ×œ×›×¤×ª×•×¨ העכבר הימני ×›×שר מוגדר 0. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :רחף למשך {P 0 "שניה " ""}{COMMA}{P "" " שניות"} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :קליק ימני STR_CONFIG_SETTING_POPULATION_IN_LABEL :הר××” ×ת ×וכלוסיית העיר בתוך תוית ×”×©× ×©×œ העיר: {STRING} @@ -1526,7 +1528,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :בחר ×ת ×” STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{STRING} :בנה ×¨×ž×–×•×¨×™× ×ž×›×× ×™×™× ×œ×¤× ×™ STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :קבע ×ת השנה בה ×¨×ž×–×•×¨×™× ×—×©×ž×œ×™×™× ×™×©×ž×©×• במסילות. לפני שנה זו יהיו בשימוש ×¨×ž×–×•×¨×™× ×ž×›× ×™×™× (×¤×¢×•×œ×ª× ×–×”×”, ×”× ×¨×§ נר××™× ×חרת) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :{STRING} :×פשר ממשק ויזו×לי עבור ×¨×ž×–×•×¨×™× -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :הצג חלון לבחירת סוג הרמזור להצבה, ×‘×ž×§×•× ×¨×§ מעבר בין ×”×פשרויות ×œ×œ× ×—×œ×•×Ÿ ב×מצעות הקלקה על "בנה רמזורי×" תוך לחיצה על מקש Ctrl +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :הצג חלון לבחירת סוג הרמזור להצבה, ×‘×ž×§×•× ×¨×§ מעבר בין ×”×פשרויות ב×מצעות Ctrl+לחיצה על ×¨×ž×–×•×¨×™× ×‘× ×•×™×™× STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :{STRING} :ברירת מחדל לבניית רמזורי רכבת STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :סוג רמזור לשימוש בברירת מחדל STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :רמזורי בלוק @@ -1611,7 +1613,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"סימטרי" STR_CONFIG_SETTING_DISTRIBUTION_MAIL :×ופן החלוקה עבור דו×ר: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"סימטרי" הכוונה שכמות הדו×ר מתחנה ×' לתחנה ב' ×”×•× ×¤×—×•×ª ×ו יותר ×ותה כמות הדו×ר מתחנה ב' לתחנה ×'. "×סימטרי" הכוונה שכמויות דו×ר שרירותיות יכולות להישלח לכל ×חד מהכיווני×. "ידני" הכוונה ש×ין חלוקה ×וטומטית עבור דו×ר. STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :×ופן החלוקה עבור מחלקה משוריינת: {STRING} -STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :מחלקה משוריינת מובילה חפצי ערך ב××§×œ×™× ×ž×ž×•×–×’, ×™×”×œ×•×ž×™× ×‘××§×œ×™× ×˜×¨×•×¤×™ וזהב ב××§×œ×™× ×§×¨. קבצי שדרוג גר×פי ×¢×œ×•×œ×™× ×œ×©× ×•×ª חלוקה זו. "סימטרי" הכוונה שכמות המטען מתחנה ×' לתחנה ב' ×”×•× ×¤×—×•×ª ×ו יותר ×ותה כמות המטען מתחנה ב' לתחנה ×'. "×סימטרי" הכוונה שכמויות מטען שרירותיות יכולות להישלח לכל ×חד מהכיווני×. "ידני" הכוונה ש×ין חלוקה ×וטומטית עבור המטען. ב××§×œ×™× ×§×¨ מומלץ לקבוע למצב ×סימטרי ×ו ידני ×›×™ ×‘× ×§×™× ×œ× ×©×•×œ×—×™× ×–×”×‘ חזרה למכרות יהלומי×. ב××§×œ×™× ×ž×ž×•×˜×–×’ ×ו טרופי ניתן לבחור ×’× ×‘×ž×¦×‘ סימטרי ×›×שר ×‘× ×§×™× ×™×©×œ×—×• חפצי ערך חזרה למקור של ××•×ª× ×—×¤×¦×™ ערך. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :מחלקה משוריינת מובילה חפצי ערך ב××§×œ×™× ×ž×ž×•×–×’, ×™×”×œ×•×ž×™× ×‘××§×œ×™× ×˜×¨×•×¤×™ וזהב ב××§×œ×™× ×§×¨. קבצי שדרוג גר×פי ×¢×œ×•×œ×™× ×œ×©× ×•×ª חלוקה זו. "סימטרי" הכוונה שכמות המטען מתחנה ×' לתחנה ב' ×”×•× ×¤×—×•×ª ×ו יותר ×ותה כמות המטען מתחנה ב' לתחנה ×'. "×סימטרי" הכוונה שכמויות מטען שרירותיות יכולות להישלח לכל ×חד מהכיווני×. "ידני" הכוונה ש×ין חלוקה ×וטומטית עבור המטען. ב××§×œ×™× ×§×¨ מומלץ לקבוע למצב ×סימטרי ×ו ידני ×›×™ ×‘× ×§×™× ×œ× ×©×•×œ×—×™× ×–×”×‘ חזרה למכרות יהלומי×. ב××§×œ×™× ×ž×ž×•×–×’ ×ו טרופי ניתן לבחור ×’× ×‘×ž×¦×‘ סימטרי ×›×שר ×‘× ×§×™× ×™×©×œ×—×• חפצי ערך חזרה למקור של ××•×ª× ×—×¤×¦×™ ערך. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :×ופן החלוקה עבור ×ž×˜×¢× ×™× ×חרי×: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"×סימטרי" הכוונה שכמויות מטען שרירותיות יכולות להישלח לכל ×חד מהכיווני×. "ידני" הכוונה ש×ין חלוקה ×וטומטית עבור המטען. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :דיוק החלוקה: {STRING} @@ -1647,7 +1649,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :מטרי (×§×™ STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :בינל×ומית (קילו ניוטון) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :יחידות גובה: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :×›×שר ×ž×•×¦×’×™× ×’×‘×”×™× ×”×©×ª×ž×© ביחידות שנבחרו. +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :×›×שר ×ž×•×¦×’×™× ×’×‘×”×™× ×”×©×ª×ž×© ביחידות שנבחרו STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :בריטית (רגל) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :מטרי (מטר) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (מטר) @@ -2828,10 +2830,9 @@ STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}עבור STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}דלג לספרייט STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}עבור לספרייט הנתון. ×× ×”×•× ×ינו ספרייט רגיל, עבור לספרייט הרגיל הר×שון ×©×‘× ×חריו STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}הספרייט ×”×§×•×“× -STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}עבור לספרייט הקוד×, ×›×שר נדלג על כל ×”×¡×¤×¨×™×™×˜×™× ×”×ž×™×•×—×“×™× ×•× ×—×–×•×¨ בסוף לתחילת הרשימה +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}עבור לספרייט הקוד×, ×›×שר נדלג על כל ×”×¡×¤×¨×™×™×˜×™× ×”×ž×™×•×—×“×™× ×•× ×—×–×•×¨ מתחילת הרשימה לסופה STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}הייצוג של הספרייט הנבחר. בעת ציור הספרייט, × ×ª×¢×œ× ×ž×”×™×™×©×•×¨ שלו STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}×”×–×– ×ת הספרייט, תוך שינוי ×ž×™×§×•× ×¢×œ צירי ×”-X וה-Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X היסט: {NUM}, Y היסט: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}בחר ספרייט STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}בחר ספרייט מנקודה ×›×œ×©×”×™× ×‘×ž×¡×š diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index ab6c96d64e..0b61b8abc7 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -11,7 +11,7 @@ ##case t ba -# $Id: hungarian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: hungarian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2943,7 +2943,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}ElÅ‘zÅ‘ STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Továbbhaladás az elÅ‘zÅ‘ normál spritera, kihagyva bármilyen ál/átszínezÅ‘/betű spriteokat, az elején folytatva az utolsóval STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}A jelenleg kiválasztott sprite ábrázolása. Az elhelyezkedés kikapcsolt sprite-rajzolás közben STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Sprite elmozdítása, módosítva az X és Y offszeteket -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offszet: {NUM}, Y offszet: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Sprite felszedése STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Szedj fel egy spriteot akárhonnan a képernyÅ‘rÅ‘l diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 701f5ffa42..1872048782 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -11,7 +11,7 @@ ##gender karlkyn kvenkyn hvorugkyn -# $Id: icelandic.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: icelandic.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2711,7 +2711,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Fyrri hr STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fara á fyrri venjulegu hreyfimynd, sleppir gervi/endurlitun/letur hreyfimyndum og fer aftast í listen þegar upphafi er náð. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Framsetning á valinni hreyfimynd. Samstillingu er sleppt við teikningu á þessari hreyfimynd. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Færðu hreyfimyndina, breytir X og Y hliðrun -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X hliðrun: {NUM}, Y hliðrun: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Veldu hreyfimynd STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Veldu hreyfimynd hvaðan sem er af skjánum diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 6773a07411..7bb3f624e2 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -10,7 +10,7 @@ ##grflangid 0x5a -# $Id: indonesian.txt 27154 2015-02-18 17:45:30Z translators $ +# $Id: indonesian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite s STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Lanjutkan ke sprite normal sebelumnya, lewati sembarang sprite bayangan/warna ulang/huruf dan pembungkus saat mulai STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Mewakili sprite yang sedang dipilih. Penjajaran diabaikan ketika sprite ini digambar STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pindahkan sprite, mengubah offset X dan Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pilih sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pilih sebuah sprite di manapun pada layar diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 88a2be0e3c..6517cba8a6 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -10,7 +10,7 @@ ##grflangid 0x08 -# $Id: irish.txt 27121 2015-01-18 17:45:32Z translators $ +# $Id: irish.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2844,7 +2844,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite r STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Téigh ar aghaigh chuig an gnáth-sprite roimhe, ag scipeáil thar aon bhréag-sprite nó sprite athdathaithe/clófhoirne agus ag timfhilleadh ag an tús STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Léiriú den sprite atá roghnaithe faoi láthair. Déantar neamhaird den ailíniú agus an sprite seo á tharraingt STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Bog an sprite timpeall, ag athrú an seach-chur X agus Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}seach-chur X: {NUM}, seach-chur Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Roghnaigh sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Roghnaigh sprite ó áit ar bith ar an scáileán diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 23a9e15d80..5dc24a82a2 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -12,7 +12,7 @@ ##case ms mp fs fp -# $Id: italian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: italian.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2908,8 +2908,11 @@ STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Va allo STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Precedente STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Procede al precedente sprite normale, saltanto qualsiasi sprite speciale, di ricoloramento o carattere e tornando all'ultimo se viene raggiunto il primo della lista STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Rappresentazione dello sprite corrente. L'allineamento viene ignorato in questa casella. -STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Sposta lo sprite, cambiando i posizionamenti X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Posizionamento X: {NUM}, Y: {NUM} +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Sposta lo sprite, cambiando gli spiazzamenti X e Y +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Reimposta posizione relativa +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Reimposta gli spiazzamenti relativi attuali +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Posizione X: {NUM}, Y: {NUM} (assoluto) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Posizione X: {NUM}, Y: {NUM} (relativo) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Scegli sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Sceglie uno o più sprite da un qualsiasi punto dello schermo diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 63d9c70c31..297e42c7d5 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -10,7 +10,7 @@ ##grflangid 0x39 -# $Id: japanese.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: japanese.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}å‰ã® STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}å‰ã®ãƒŽãƒ¼ãƒžãƒ«ã‚¹ãƒ—ãƒ©ã‚¤ãƒˆã«æˆ»ã‚Šã¾ã™ã€‚始端ã¨çµ‚端ã¯é€£ç¶šã—ã¦ã„ã‚‹ã‚‚ã®ã¨ã¿ãªã—ã€ç–‘ä¼¼/リカラー/フォントスプライトã¯ã‚¹ã‚­ãƒƒãƒ—ã—ã¾ã™ STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}ç¾åœ¨é¸æŠžã•れã¦ã„るスプライトã®ä»£è¡¨çµµã‚’示ã—ã¾ã™ã€‚ã“ã®é…列ã¯ã‚¹ãƒ—ライトをæç”»ã™ã‚‹ã¨ãã«ã¯ç„¡è¦–ã•れã¾ã™ STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}X・Yオフセットを変更ã—ã€ã‚¹ãƒ—ライトを移動ã—ã¾ã™ -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Xオフセット: {NUM}, Yオフセット: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}スプライトをé¸ã¶ STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}ç”»é¢å†…ã‹ã‚‰ã‚¹ãƒ—ライトをé¸ã³ã¾ã™ diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 8dbc0a40d9..61685f8777 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -11,7 +11,7 @@ ##gender m f -# $Id: korean.txt 27154 2015-02-18 17:45:30Z translators $ +# $Id: korean.txt 27189 2015-03-16 17:45:22Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -1218,7 +1218,7 @@ STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :ì§„í–‰ ë°©í–¥ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :ì˜¤ë¥¸ìª½ì— STR_CONFIG_SETTING_SHOWFINANCES :ì—°ë§ì— ìžë™ìœ¼ë¡œ 재정 ì°½ì„ ë„움: {STRING} STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :ì´ ì˜µì…˜ì„ ì¼œë©´ íšŒì‚¬ì˜ ìž¬ì • ìƒíƒœë¥¼ 확ì¸í•˜ê¸° 쉽ë„ë¡ ë§¤ë…„ ë§ì— 재정 ì°½ì´ ìžë™ìœ¼ë¡œ 뜹니다. -STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :새로 지정하는 경로는 기본ì ìœ¼ë¡œ 'ì§í†µ'으로 처리: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :새로 지정하는 경로는 기본ì ìœ¼ë¡œ 'ì§í–‰'으로 처리: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :ì¼ë°˜ì ìœ¼ë¡œ ì°¨ëŸ‰ì€ ê²½ë¡œ ìƒì— 있는 모든 ì—­ì— ì •ì°¨í•˜ê²Œ ë˜ì–´ìžˆìŠµë‹ˆë‹¤. ì´ ì˜µì…˜ì„ ì¼œë©´ ì°¨ëŸ‰ì´ ë§ˆì§€ë§‰ 목ì ì§€ê¹Œì§€ ì •ì°¨ì—†ì´ ëª¨ë“  ì—­ì„ í†µê³¼í•  것입니다. ì´ ì˜µì…˜ì€ ìƒˆë¡œ 경로를 지정하는 차량ì—ë§Œ ì ìš©ë˜ëŠ” ì ì„ 알아ë‘십시오. 하지만 ê° ì°¨ëŸ‰ì˜ ê²½ë¡œëŠ” ë‘ ê°€ì§€ 방법 ì¤‘ì— ì›í•˜ëŠ” 대로 다시 설정할 수 있습니다. STR_CONFIG_SETTING_STOP_LOCATION :새로 지정하는 ì—­ ì •ì°¨ 경로는 기본ì ìœ¼ë¡œ ì—­ì˜ {STRING}ì— ì •ì§€í•˜ë„ë¡ ì„¤ì • STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :열차가 기본ì ìœ¼ë¡œ ì •ê±°ìž¥ì˜ ì–´ëŠ ìœ„ì¹˜ì— ì •ì°¨í•  것ì¸ì§€ë¥¼ 설정합니다. '가까운 쪽'ì€ ì—­ì— ì§„ìž…í•˜ëŠ” 곳과 가까운 ê³³ì—, '중간'ì€ ì—­ 중앙ì—, '먼쪽'ì€ ì§„ìž…í•˜ëŠ” 곳과 먼 ê³³ì— ì •ì°¨í•©ë‹ˆë‹¤. ì´ ì˜µì…˜ì€ ìƒˆë¡œ 경로를 지정하는 차량ì—ë§Œ ì ìš©ë˜ëŠ” ì ì„ 알아ë‘십시오. 하지만 ê° ì°¨ëŸ‰ì˜ ê²½ë¡œëŠ” ë‘ ê°€ì§€ 방법 ì¤‘ì— ì›í•˜ëŠ” 대로 다시 설정할 수 있습니다. @@ -1322,7 +1322,7 @@ STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :ì§€ë„ì˜ ë‚˜ STR_CONFIG_SETTING_TREE_PLACER_NONE :ì—†ìŒ STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :ì˜¤ë¦¬ì§€ë„ STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :í–¥ìƒë¨ -STR_CONFIG_SETTING_ROAD_SIDE :ìžë™ì°¨/ì „ì°¨: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE :ìžë™ì°¨ 통행 ë°©í–¥: {STRING} STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :í†µí–‰ë°©í–¥ì„ ì„ íƒí•˜ì„¸ìš”. STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :높ì´ë§µ 회전: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :반시계방향 @@ -1711,7 +1711,7 @@ STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}설정 # Config errors STR_CONFIG_ERROR :{WHITE}설정 파ì¼ì—서 오류 ë°œìƒ STR_CONFIG_ERROR_ARRAY :{WHITE}... ë°°ì—´ '{STRING}'ì—서 오류 ë°œìƒ -STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... '{1:STRING}'{G 0 "ì€" "는"} '{0:STRING}'ì— ì‚¬ìš©í•  수 없습니다 +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... '{1:STRING}'ì— ìž˜ëª»ëœ ê°’('{0:STRING}')ì´ ì§€ì •ë˜ì—ˆìŠµë‹ˆë‹¤. STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... 설정 '{STRING}' ëì— í›„í–‰ë¬¸ìž(??) STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... NewGRF '{STRING}' 무시중: '{STRING}'{G 1 "ê³¼" "와"} GRF IDê°€ 겹침 STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... 유효하지 ì•Šì€ NewGRF '{STRING}' 무시중: {STRING} @@ -1802,10 +1802,10 @@ STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}í„°ë„ STR_CHEAT_NO_JETCRASH :{LTBLUE}대형 항공기가 소형 공항ì—서 (ìžì£¼) ì¶©ëŒí•˜ì§€ 않게 함: {ORANGE}{STRING} STR_CHEAT_EDIT_MAX_HL :{LTBLUE}최대 지형 ê³ ë„ê°’ 수정: {ORANGE}{NUM} STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}최대 지형 높ì´ê°’ì„ ìˆ˜ì •í•©ë‹ˆë‹¤. -STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :온대 기후 지형 -STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :아한대 지형 -STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :아열대 기후 지형 -STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :장난ê°ë‚˜ë¼ 지형 +STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :온대 기후 +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :아한대 기후 +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :아열대 기후 +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :장난ê°ë‚˜ë¼ STR_CHEAT_CHANGE_DATE :{LTBLUE}ë‚ ì§œ 변경: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}í˜„ìž¬ì˜ ì—°ë„를 변경 STR_CHEAT_SETUP_PROD :{LTBLUE}1ì°¨ 산업시설 ìƒì‚°ëŸ‰ ì¡°ì ˆ 허용: {ORANGE}{STRING} @@ -2065,7 +2065,7 @@ STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}회사 ############ End of leave-in-this-order STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM}ëª…ì˜ ì ‘ì†ìžê°€ 먼저 기다리고 있습니다 STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}지금까지 {BYTES}를 다운로드하였습니다 -STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} 다운로드 ë¨ +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} 다운로드 완료 STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}ì ‘ì† ëŠê¸° @@ -2360,17 +2360,17 @@ STR_STATION_CLASS_WAYP :{G=f}경유지 STR_BUILD_SIGNAL_CAPTION :{WHITE}신호기 ì„ íƒ STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}í색 신호기 (구ì‹){}가장 기본ì ì¸ 신호기 형ì‹ìž…니다. 단 한 ëŒ€ì˜ ì—´ì°¨ë§Œì´ ì´ í색 êµ¬ê°„ì„ í†µê³¼í•  수 있습니다. STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}입구 신호기 (구ì‹){}ë‹¤ìŒ í색 êµ¬ê°„ì— ìžˆëŠ” 출구 신호기가 하나ë¼ë„ 파란불ì´ë©´ íŒŒëž€ë¶ˆì´ ë˜ë©°, 그렇지 ì•Šì€ ê²½ìš°ì—는 ë¹¨ê°„ë¶ˆì´ ë©ë‹ˆë‹¤. -STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}출구 신호기 (구ì‹){}ì¼ë°˜ 신호기와 ê¸°ëŠ¥ì´ ë˜‘ê°™ì§€ë§Œ, 입구 & 콤보 신호기와 올바르게 연계ë˜ì–´ì•¼ 합니다. -STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}콤보 신호기 (구ì‹){}콤보 신호기는 입구 신호기와 출구 ì‹ í˜¸ê¸°ì˜ ì—­í• ì„ ë™ì‹œì— 합니다. ì´ ì‹ í˜¸ê¸°ëŠ” 사전 ì‹ í˜¸ê¸°ì˜ ê±°ëŒ€í•œ "나뭇가지 구조"를 건설할 수 있ë„ë¡ ë„와ì¤ë‹ˆë‹¤. +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}출구 신호기 (구ì‹){}ì¼ë°˜ 신호기와 ê¸°ëŠ¥ì´ ë˜‘ê°™ì§€ë§Œ, 입구 & 복합 신호기와 올바르게 연계ë˜ì–´ì•¼ 합니다. +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}복합 신호기 (구ì‹){}복합 신호기는 입구 신호기와 출구 ì‹ í˜¸ê¸°ì˜ ì—­í• ì„ ë™ì‹œì— 합니다. ì´ ì‹ í˜¸ê¸°ëŠ” 사전 ì‹ í˜¸ê¸°ì˜ ê±°ëŒ€í•œ "나뭇가지 구조"를 건설할 수 있ë„ë¡ ë„와ì¤ë‹ˆë‹¤. STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}경로 신호기 (구ì‹){}경로 신호기는 경로가 겹치지 않는 ê²½ìš°ì— í•œ 대 ì´ìƒì˜ 열차가 한 í색 êµ¬ê°„ì— ë™ì‹œì— 들어갈 수 있게 í•´ì¤ë‹ˆë‹¤. 경로 신호기는 반대편ì—서 통과가 가능합니다. STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}단방향 경로 신호기 (구ì‹){}경로 신호기는 경로가 겹치지 않는 ê²½ìš°ì— í•œ 대 ì´ìƒì˜ 열차가 한 í색 êµ¬ê°„ì— ë™ì‹œì— 들어갈 수 있게 í•´ì¤ë‹ˆë‹¤. 단방향 경로 신호기는 반대편ì—서 통과가 불가능합니다. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}í색 신호기 (ì „ìžì‹){}가장 기본ì ì¸ 신호기 형ì‹ìž…니다. 단 한 ëŒ€ì˜ ì—´ì°¨ë§Œì´ ì´ í색 êµ¬ê°„ì„ í†µê³¼í•  수 있습니다. STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}입구 신호기 (ì „ìžì‹){}ë‹¤ìŒ í색 êµ¬ê°„ì— ìžˆëŠ” 출구 신호기가 하나ë¼ë„ 파란불ì´ë©´ íŒŒëž€ë¶ˆì´ ë˜ë©°, 그렇지 ì•Šì€ ê²½ìš°ì—는 ë¹¨ê°„ë¶ˆì´ ë©ë‹ˆë‹¤. -STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}출구 신호기 (ì „ìžì‹){}ì¼ë°˜ 신호기와 ê¸°ëŠ¥ì´ ë˜‘ê°™ì§€ë§Œ, 입구 & 콤보 신호기와 올바르게 연계ë˜ì–´ì•¼ 합니다. -STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}콤보 신호기 (ì „ìžì‹){}콤보 신호기는 입구 신호기와 출구 ì‹ í˜¸ê¸°ì˜ ì—­í• ì„ ë™ì‹œì— 합니다. ì´ ì‹ í˜¸ê¸°ëŠ” 사전 ì‹ í˜¸ê¸°ì˜ ê±°ëŒ€í•œ "ë‚˜ë­‡ê°€ì§€ì‹ êµ¬ì¡°"를 건설할 수 있ë„ë¡ ë„와ì¤ë‹ˆë‹¤. +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}출구 신호기 (ì „ìžì‹){}ì¼ë°˜ 신호기와 ê¸°ëŠ¥ì´ ë˜‘ê°™ì§€ë§Œ, 입구 & 복합 신호기와 올바르게 연계ë˜ì–´ì•¼ 합니다. +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}복합 신호기 (ì „ìžì‹){}복합 신호기는 입구 신호기와 출구 ì‹ í˜¸ê¸°ì˜ ì—­í• ì„ ë™ì‹œì— 합니다. ì´ ì‹ í˜¸ê¸°ëŠ” 사전 ì‹ í˜¸ê¸°ì˜ ê±°ëŒ€í•œ "ë‚˜ë­‡ê°€ì§€ì‹ êµ¬ì¡°"를 건설할 수 있ë„ë¡ ë„와ì¤ë‹ˆë‹¤. STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}경로 신호기 (ì „ìžì‹){}경로 신호기는 경로가 겹치지 않는 ê²½ìš°ì— í•œ 대 ì´ìƒì˜ 열차가 한 í색 êµ¬ê°„ì— ë™ì‹œì— 들어갈 수 있게 í•´ì¤ë‹ˆë‹¤. 경로 신호기는 반대편ì—서 통과가 가능합니다. STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}단방향 경로 신호기 (ì „ìžì‹){}경로 신호기는 경로가 겹치지 않는 ê²½ìš°ì— í•œ 대 ì´ìƒì˜ 열차가 한 í색 êµ¬ê°„ì— ë™ì‹œì— 들어갈 수 있게 í•´ì¤ë‹ˆë‹¤. 단방향 경로 신호기는 반대편ì—서 통과가 불가능합니다. -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}신호기 변환{}ì´ ë²„íŠ¼ì„ ì„ íƒí•œ ë’¤ ì´ë¯¸ ì„¤ì¹˜ëœ ì‹ í˜¸ê¸°ë¥¼ í´ë¦­í•˜ë©´, ì‹ í˜¸ê¸°ì˜ ì¢…ë¥˜(ì¼ë°˜/입구/출구/콤보/경로)와 형ì‹(구ì‹â†”ì „ìžì‹)ì„ ë³€ê²½í•˜ê³ , CTRL+í´ë¦­í•˜ë©´ ì‹ í˜¸ê¸°ì˜ í˜•ì‹ì„ 변경합니다. SHIFT+í´ë¦­ì„ 사용하면 ì˜ˆìƒ ê°€ê²©ì„ ë³¼ 수 있습니다. +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}신호기 변환{}ì´ ë²„íŠ¼ì„ ì„ íƒí•œ ë’¤ ì´ë¯¸ ì„¤ì¹˜ëœ ì‹ í˜¸ê¸°ë¥¼ í´ë¦­í•˜ë©´, ì‹ í˜¸ê¸°ì˜ ì¢…ë¥˜(ì¼ë°˜/입구/출구/복합/경로)와 형ì‹(구ì‹â†”ì „ìžì‹)ì„ ë³€ê²½í•˜ê³ , CTRL+í´ë¦­í•˜ë©´ ì‹ í˜¸ê¸°ì˜ í˜•ì‹ì„ 변경합니다. SHIFT+í´ë¦­ì„ 사용하면 ì˜ˆìƒ ê°€ê²©ì„ ë³¼ 수 있습니다. STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}드래그시 신호기 간격 STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}드래그시 신호기 간격 ê°ì†Œ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}드래그시 신호기 ì¦ê°€ @@ -2563,7 +2563,7 @@ STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}소비 STR_INDUSTRY_CARGOES_HOUSES :{WHITE}ë„시 가구 STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}ì´ ì‚°ì—…ì‹œì„¤ì˜ ê³µê¸‰ìžì™€ ê³ ê°ì„ 보려면 í´ë¦­í•˜ì„¸ìš”. STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}ì´ í™”ë¬¼ì˜ ê³µê¸‰ìžì™€ ê³ ê°ì„ 보려면 í´ë¦­í•˜ì„¸ìš”. -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}ì‚°ì—…ë§ í‘œì‹œ +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}산업시설 ì—°ê³„ë„ ë³´ê¸° STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}ì´ ì‚°ì—…ì‹œì„¤ì—서 ìƒì‚°/소비하는 í™”ë¬¼ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}ì§€ë„ì— í‘œì‹œ STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}위 ì‚°ì—…ë§ì— í‘œì‹œëœ ì‚°ì—…ì„ ì†Œí˜•ì§€ë„ì—서 ë³¼ 수 있게 합니다. @@ -2610,23 +2610,23 @@ STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :ì¼ë°˜ 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :입구 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :출구 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :콤보 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :복합 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :단방향 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :ì¼ë°˜ 신호기와 입구 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :ì¼ë°˜ 신호기와 출구 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :ì¼ë°˜ 신호기와 콤보 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :ì¼ë°˜ 신호기와 복합 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :ì¼ë°˜ 신호기와 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :ì¼ë°˜ 신호기와 단방향 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :입구 신호기와 출구 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :입구 신호기와 콤보 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :입구 신호기와 복합 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :입구 신호기와 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :입구 신호기와 단방향 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :출구 신호기와 콤보 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :출구 신호기와 복합 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :출구 신호기와 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :출구 신호기와 단방향 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :콤보 신호기와 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :콤보 신호기와 단방향 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :복합 신호기와 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :복합 신호기와 단방향 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :경로 신호기와 단방향 경로 신호기가 ì„¤ì¹˜ëœ {STRING} 선로 STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} 차량기지 @@ -2880,7 +2880,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}ì´ì „ STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}(위조/재색ìƒ/글씨 스프ë¼ì´íŠ¸ë¥¼ 제외한) ì´ì „ 보통 스프ë¼ì´íŠ¸ë¡œ ì´ë™í•˜ê³ , 첫 번째 스프ë¼ì´íŠ¸ì— ë‹¤ë‹¤ë¥´ë©´ 마지막으로 ëŒì•„갑니다. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}현재 ì„ íƒëœ 스프ë¼ì´íŠ¸ë¥¼ 표시합니다. ì´ ìŠ¤í”„ë¼ì´íŠ¸ê°€ 그려졌ì„ë•Œì˜ ì •ë ¬ì€ ë¬´ì‹œí•©ë‹ˆë‹¤. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Xì¶•ì´ë‚˜ Yì¶• 방향으로 스프ë¼ì´íŠ¸ë¥¼ ì´ë™ì‹œí‚µë‹ˆë‹¤. -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Xì¶•: {NUM}, Yì¶•: {NUM} +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}스프ë¼ì´íЏ ì„ íƒ STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}화면ì—서 스프ë¼ì´íŠ¸ë¥¼ ê³¨ë¼ ëƒ…ë‹ˆë‹¤. @@ -3137,7 +3140,7 @@ STR_STATION_VIEW_VIA_ANY :{RED}어디든 STR_STATION_VIEW_FROM_HERE :{GREEN}여기ì—서 출발하는 {CARGO_SHORT} STR_STATION_VIEW_VIA_HERE :{GREEN}ì´ ì—­ì„ ê²½ìœ í•˜ëŠ” {CARGO_SHORT} STR_STATION_VIEW_TO_HERE :{GREEN}ì´ ì—­ì— ë„착하는 {CARGO_SHORT} -STR_STATION_VIEW_NONSTOP :{YELLOW}ì§í†µ {CARGO_SHORT} +STR_STATION_VIEW_NONSTOP :{YELLOW}ì§í–‰ {CARGO_SHORT} STR_STATION_VIEW_GROUP_S_V_D :출발-경유-ë„ì°© STR_STATION_VIEW_GROUP_S_D_V :출발-ë„ì°©-경유 @@ -3224,10 +3227,10 @@ STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}ì—†ìŒ STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}회사가치: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% {COMPANY}ì˜ ì†Œìœ ) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}기반시설: -STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}ì² ë„ {COMMA}칸 +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}선로 {COMMA}칸 STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}ë„로 {COMMA}칸 -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}운하시설 {COMMA}칸 -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}정거장 {COMMA}칸 +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}항만시설 {COMMA}칸 +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}ì—­ {COMMA}칸 STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}공항 {COMMA}ê°œ STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}ì—†ìŒ diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 7f0c4106dc..c857af9493 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -12,7 +12,7 @@ ##case kas -# $Id: latvian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: latvian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2799,7 +2799,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Iepriek STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Iet pie iepriekšējÄ parastÄ gariņa, izlaižot visus pseido/pÄrkrÄsotos/fonta gariņus STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}AtlasÄ«tÄ gariņa attÄ“lojums. To attÄ“lojot, izkÄrtojums netiek ievÄ“rots STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}PÄrvietot gariņu, lai mainÄ«tu X un Y vÄ“rtÄ«bas -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X garums: {NUM}, Y garums: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Paņemt gariņu STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Paņemt gariņu no jebkuras vietas ekrÄnÄ diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 942f085708..b4ed2fcca2 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -12,7 +12,7 @@ ##case kas ko kam ka kuo kur kreip -# $Id: lithuanian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: lithuanian.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -3098,7 +3098,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}BuvÄ™s a STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Pereiti prie buvusio animacinio objekto praleidžiant visus pseudo/spalvinimo/Å¡riftų objektus perÅ¡okant į pabaigÄ… pradžioje STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Atvaizdavimas dabartinio pasirinkto sprite. Suderinamumas yra ignoruojamas, rengiant šį sprite STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Perkelti sprite aplink, keiÄiant X ir Y atsvaras -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X atsvara: {NUM}, Y atsvara: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Anuliuoti santykinius +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Anuliuoti santykinius poslinkius +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X poslinkis: {NUM}, Y poslinkis: {NUM} (Absoliutus) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X poslinkis: {NUM}, Y poslinkis: {NUM} (Santykinis) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pasirinkti sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pasirinkite sprite iÅ¡ bet kurios vietos ekrane diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 334b002d53..60cd91d44a 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -10,7 +10,7 @@ ##grflangid 0x23 -# $Id: luxembourgish.txt 27112 2015-01-04 17:45:35Z translators $ +# $Id: luxembourgish.txt 27182 2015-03-13 17:45:21Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Fiiresch STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Géi weider op déi nächst normal Sprite, iwwersprang all pseudo/recolour/font Sprite an sprang zréck op den Ufank no der leschter. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representatioun vun der grad gewielter Sprite. Den Alignement gëtt ignoréiert wann d'Sprite gezun gëtt STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Beweg Sprite, X an Y offsets enneren sech -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Relativ zerécksetzen +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Momentan relativ Offsets zerécksetzen +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X-Offset: {NUM}, Y-Offset: {NUM} (Absolut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X-Offset: {NUM}, Y-Offset: {NUM} (Relativ) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Wiel Sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Wiel en Sprite egalwou um Schierm aus diff --git a/src/lang/malay.txt b/src/lang/malay.txt index d04fde3547..57db3a9a5e 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -10,7 +10,7 @@ ##grflangid 0x3c -# $Id: malay.txt 27153 2015-02-15 17:45:47Z translators $ +# $Id: malay.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2573,7 +2573,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Peperi s STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Teruskan ke peperi dahulu yang biasa, melangkau sebarang peperi pseudo/warna kembali/fon dan memusing balik semula STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Perwakilan peperi yang terpilih. Penjajaran tidak diendahkan apabila sedang melukiskan peperi. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Alih peperi, mengubahkan ofset X dan Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X ofset: {NUM}, Y ofset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pilih peperi STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pilih peperi di mana-mana sahaja dari skrin diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 5393106acc..4603978b91 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -12,7 +12,7 @@ ##case small -# $Id: norwegian_bokmal.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: norwegian_bokmal.txt 27180 2015-03-10 17:47:16Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2883,7 +2883,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Forrige STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsett til forrige normale sprite og hopp over enhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved begynnelsen STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}ForhÃ¥ndsvisning av valgt sprite. Innrettingen ignoreres nÃ¥r spriten tegnes STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytt spriten rundt omkring, for Ã¥ endre X- og Y-forskyvningene -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-forskyvning: {NUM}, Y-forskyvning: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Tilbakestill relativt +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Nullstill de nÃ¥værende relative forskyvninger +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X forskyvning: {NUM}, Y forskyvning: {NUM} (Absolutt) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X forskyvning: {NUM}, Y forskyvning: {NUM} (Relativt) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Velg en sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Velg en sprite fra et vilkÃ¥rlig sted pÃ¥ skjermen diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 31d3fa8f6e..8699584878 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -12,7 +12,7 @@ ##case small -# $Id: norwegian_nynorsk.txt 27124 2015-01-22 17:45:22Z translators $ +# $Id: norwegian_nynorsk.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2800,7 +2800,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Førre s STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsett til neste normale sprite og hopp over einhver pseudo-/omfargings-/skrifttype- sprite, samt start om ved byrjinga STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Førehandsvisning av valgt sprite. Innrettinga ignorerast nÃ¥r spriten tegnes STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytt spriten rundt omkring, for Ã¥ endre X- og Y-forskyvningene -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X-forskyvning: {NUM}, Y-forskyvning: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Vel sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Vel ein sprite frÃ¥ eit vilkÃ¥rleg sted pÃ¥ skjermen diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 3d2e961c14..c81cf34615 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -12,7 +12,7 @@ ##case d c b n m w -# $Id: polish.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: polish.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -3259,7 +3259,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Poprzedn STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Idź do poprzedniego normalnego obrazka, pomijajÄ…c jakiekolwiek pseudo/kolorowe/znakowe obrazki i zawijaj je od pierwszego do ostatniego STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Przedstawienie wybranego orbazka. Dostosowanie jest ignorowane podczas rysowania tego obrazka STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Poruszaj obrazkiem, zmieniajÄ…c przesuniÄ™cia X i Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}PrzesuniÄ™cie X: {NUM}, PrzesuniÄ™cie Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Resetuj zależność +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Resetuj aktualne offsety zależne +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (CaÅ‚kowity) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (Zależny) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Wybierz obrazek STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Wybierz obrazek z dowolnego miejsca na ekranie diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 6c6001884d..e5ec14c960 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -11,7 +11,7 @@ ##gender n m f mp fp -# $Id: portuguese.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: portuguese.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2863,7 +2863,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Gráfico STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Proceder ao gráfico normal anterior, ignorando quaisquer gráficos pseudo/recolorir/tipo-de-letra e dando a volta no início STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representação do gráfico seleccionado actualmente. O alinhamento é ignorado a desenhar este gráfico STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mover o gráfico, mudando os desvios X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Desvio X: {NUM}, Desvio Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Escolher gráfico STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Escolha um gráfico de qualquer lado no ecrã diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 02cd7a1605..55bf5c6020 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -10,7 +10,7 @@ ##grflangid 0x28 -# $Id: romanian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: romanian.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -249,7 +249,15 @@ STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bara de STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolează clădiri, străzi, etc. pe un pătrățel de teren. Ctrl pentru selectare pe diagonală. Shift comută construcÈ›ie/estimare cost # Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Arată ascunse +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Arată ascunse +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Arată ascunse +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Arată ascunse +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Activând acest buton, È™i trenurile vor fi afiÈ™ate +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Activând acest buton, È™i autovehiculele vor fi afiÈ™ate +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Activând acest button, È™i vapoarele ascunse vor fi afiÈ™ate +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Activând acest buton, È™i aeronavele ascunse vor fi afiÈ™ate # Query window STR_BUTTON_DEFAULT :{BLACK}Prestabilit(e) @@ -1074,6 +1082,7 @@ STR_TERRAIN_TYPE_VERY_FLAT :Foarte plat STR_TERRAIN_TYPE_FLAT :Plat STR_TERRAIN_TYPE_HILLY :Deluros STR_TERRAIN_TYPE_MOUNTAINOUS :Muntos +STR_TERRAIN_TYPE_ALPINIST :Alpinist STR_CITY_APPROVAL_PERMISSIVE :Permisivă STR_CITY_APPROVAL_TOLERANT :Tolerantă @@ -1267,8 +1276,8 @@ STR_CONFIG_SETTING_ERRMSG_DURATION :Durata de afiÈ™ STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Durata afișării mesajelor de eroare în fereastra roÈ™ie. Unele mesaje de eroare (cele critice) nu sunt închise automat după trecerea acestei perioade, È™i trebuie închise manual. STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} secund{P 0 ă e} STR_CONFIG_SETTING_HOVER_DELAY :AfiÈ™ează texte informative: {STRING} -STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Durata dinaintea afișării textelor informative când se È›ine mouse-ul pe un element al interfeÈ›ei. Alternativ, afiÈ™area textelor informative poate fi setată pentru click-dreapta -STR_CONFIG_SETTING_HOVER_DELAY_VALUE :După {COMMA} secund{P 0 ă e} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Durata dinaintea afișării sfaturilor când se È›ine mausul pe un element al interfeÈ›ei. Alternativ, afiÈ™area sfaturilor poate fi setată pentru clic-dreapta +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :PluteÈ™te {COMMA} milisecund{P 0 ă e} STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Click dreapta STR_CONFIG_SETTING_POPULATION_IN_LABEL :AfiÅŸează populaÅ£ia unui oras lângă nume: {STRING} STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :AfiÈ™ează populaÈ›ia oraÈ™elor în numele afiÈ™ate pe hartă @@ -2805,7 +2814,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Imaginea STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Mergi la precedenta imagine normală, sărind peste pseudo-imagini, recolorări sau fonturi ÅŸi reporneÅŸte când s-a ajuns la sfârÅŸit STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Reprezentarea imaginii curente. Aliniamentul este ignorat STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}MiÅŸcă imaginea schimbând distanÅ£ele pe axele X ÅŸi Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}distanÅ£a X: {NUM}, distanÅ£a Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Resetează relativele +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Resetază limitele relative actuale +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Limita X: {NUM}, Limita Y: {NUM} (Absolut) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Limita X: {NUM}, Limita Y: {NUM} (Relativ) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Alege imagine STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Alege o imagine de oriunde de pe ecran @@ -3343,8 +3355,17 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Redenume STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}RedenumeÅŸte modelul de navă STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}RedenumeÅŸte modelul de aeronavă +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Ascunde +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Ascunde +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Ascunde +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Ascunde +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}AfiÈ™ează +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}AfiÈ™ează +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}AfiÈ™ează +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}AfiÈ™ează +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Comută ascunderea/afiÈ™area tipului de tren STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Comutator pentru afiÅŸarea tipului de autovehicul STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Comutator pentru afiÅŸarea tipului de navă STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Comutator pentru afiÅŸarea tipului de aeronavă @@ -3453,6 +3474,10 @@ STR_REPLACE_VEHICLE_ROAD_VEHICLE :Autovehicolul STR_REPLACE_VEHICLE_SHIP :Nava STR_REPLACE_VEHICLE_AIRCRAFT :Aeronava +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vehicule în uz +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Coloana vehiculelor pe care le deÈ›ii +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Vehicule disponibile +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Coloana vehiculelor disponibile pentru înlocuire STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Alege tipul de motor pentru înlocuire STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Alege noul tip de motor pe care doreÅŸti să-l foloseÅŸti în locul motorului selectat în stânga @@ -4097,6 +4122,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... păd STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... poate fi construit doar deasupra liniei zăpezii STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... poate fi construit doar sub linia zăpezii +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Modifică parametrii generatorului ca să obÈ›ii o hartă mai bună # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Nu se poate construi o gară aici... diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 90231d7fe8..78e1926d11 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -12,7 +12,7 @@ ##case m f n p nom gen dat acc abl pre -# $Id: russian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: russian.txt 27177 2015-03-02 17:46:37Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -3059,7 +3059,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Пред STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Перейти к предыдущему нормальному Ñпрайту, пропуÑÐºÐ°Ñ Ð¸Ð·Ð¼ÐµÐ½Ñющие цвет, шрифтовые, пÑевдоÑпрайты. Переход из начала ÑпиÑка к поÑледнему Ñпрайту. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}ПредÑтавление выбранного Ñпрайта. Выравнивание не учитываетÑÑ Ð¿Ñ€Ð¸ прориÑовке Ñтого Ñпрайта. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Двигайте Ñпрайт, изменÑÑ Ñмещение по X и по Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Смещение по X: {NUM}, Смещение по Y: {NUM} +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}Выбрать Ñпрайт STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Выберите любой Ñпрайт на Ñкране diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index a6e94ceaff..42d345a909 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -12,7 +12,7 @@ ##case nom big gen dat aku vok lok ins -# $Id: serbian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: serbian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2940,7 +2940,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Prethodn STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Vraća se na prethodni normalan sprajt, preskaÄući sve pseudo/prebojavajuće/font sprajtove i prelazi na kraj posle poÄetnog STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Prikaz trenutno odabranog sprajta. Poravnanje se ignoriÅ¡e tokom iscrtavanja ovog sprajta STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}PremeÅ¡tanje sprajta po kordinatama, menjanjem X i Y pomeraja -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X pomeraj: {NUM}, Y pomeraj: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Odabiranje sprajta STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Odabiranje sprajta bilo gde sa ekrana diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index c15d9bd54c..40ba39d39e 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -10,7 +10,7 @@ ##grflangid 0x56 -# $Id: simplified_chinese.txt 27130 2015-01-31 17:45:21Z translators $ +# $Id: simplified_chinese.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}上一 STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}继续处ç†ä¸Šä¸€ä¸ªæ­£å¸¸çš„图形元素,略过任何虚ä½ï¼é‡æ–°ç€è‰²ï¼æ–‡å­—字型相关的图形元素;并且在处ç†åˆ°ç¬¬ä¸€ä¸ªå›¾å½¢å…ƒç´ åŽï¼Œè¿”回最åŽçš„图形元素继续处ç†ã€‚ STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}显示目å‰é€‰å–çš„ sprite。当 sprite 正在æç»˜æ—¶ä¼šå¿½ç•¥å…¶å®šä½ã€‚ STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}移动 sprite 到指定的 X 与 Y 座标ä½ç§» -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X 座标ä½ç§»: {NUM}, Y 座标ä½ç§»: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}选择 sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}请从å±å¹•ç”»é¢ä¸­ä»»æ„选å–一个 sprite diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 08c13c2dd7..cfca2313dd 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -12,7 +12,7 @@ ##case g -# $Id: slovak.txt 27116 2015-01-10 17:46:35Z translators $ +# $Id: slovak.txt 27179 2015-03-09 18:15:33Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -428,6 +428,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Koniec ############ range for settings menu starts STR_SETTINGS_MENU_GAME_OPTIONS :Nastavenia hry +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Nastavenia STR_SETTINGS_MENU_SCRIPT_SETTINGS :Umelá inteligencia / Nastavenia hry STR_SETTINGS_MENU_NEWGRF_SETTINGS :Nastavenie NewGRF STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Nastavenie priehľadnosti @@ -1045,6 +1046,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :iné STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}VeľkosÅ¥ rozhrania +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normálne STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dvojnásobná veľkosÅ¥ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Å tvornásobná veľkosÅ¥ @@ -1149,6 +1151,7 @@ STR_CITY_APPROVAL_HOSTILE :Odmietavy STR_WARNING_NO_SUITABLE_AI :{WHITE}Nieje dostupné žiadne použiteľné AI...{}Niekoľko AI je možné stiahnuÅ¥ cez 'Online obsah' # Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Nastavenia STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Filtrovací reÅ¥azec: STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}RozšíriÅ¥ vÅ¡etko STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}ZbaliÅ¥ vÅ¡etky @@ -1336,7 +1339,7 @@ STR_CONFIG_SETTING_AUTORENEW_MONEY :Potrebné finan STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Minimálna suma ktorá musí zostaÅ¥ na úÄte pred plánovanou automatickou výmenou vozidiel. STR_CONFIG_SETTING_ERRMSG_DURATION :Trvanie zobrazenia chybovej hlášky: {STRING} STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Trvanie zobrazenia chybovej hlášky v Äervenom okne. Uvedomte si že niektoré "kritické" správy nezmiznú po uplynutí Äasu, ale musia byÅ¥ zatvorené ruÄne. -STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sekund(y) +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} sek{P unda undy únd} STR_CONFIG_SETTING_HOVER_DELAY :Ukáž nápovedu: {STRING} STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Oneskorenie pred tým ako bude zobrazená nápoveda po ukázaní myÅ¡ou. Nápoveda môže byÅ¥ eventuálne nastavené aj na PRAVÉ tlaÄítko myÅ¡i. STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Zobrazenie na {COMMA} sekúnd @@ -1632,7 +1635,7 @@ STR_CONFIG_SETTING_STATUSBAR_POS :Pozícia inform STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horizontálna poloha stavového riadku na spodu obrazovky STR_CONFIG_SETTING_SNAP_RADIUS :Rádius uchytenia okna: {STRING} STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :VzdialenosÅ¥ medzi oknami pred tým ako je okno pripojené automaticky k vedľajÅ¡iemu oknu -STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel(ov) +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P "" y ov} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :vypnuté STR_CONFIG_SETTING_SOFT_LIMIT :Maximálný poÄet nepriľnavých okien: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :PoÄet otvorených neprilepených okien pred tým ako sa najstraÅ¡ie okno automatický zatvorí @@ -1793,6 +1796,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}Viacero STR_INTRO_GAME_OPTIONS :{BLACK}Nastavenia hry STR_INTRO_HIGHSCORE :{BLACK}Najlepší hráÄi +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Nastavenia STR_INTRO_NEWGRF_SETTINGS :{BLACK}Nastavenia NewGRF STR_INTRO_ONLINE_CONTENT :{BLACK}SkontrolovaÅ¥ online obsah STR_INTRO_SCRIPT_SETTINGS :{BLACK}Umelá inteligencia / Nastavenia skriptu @@ -1812,6 +1816,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}VybraÅ¥ STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}ZobraziÅ¥ nastavenia hry STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}ZobraziÅ¥ tabuľku hráÄov s najvyšším skóre +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Nastavenie zobrazenia STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}ZobraziÅ¥ NewGRF nastavenia STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}SkontrolovaÅ¥ nový a aktualizovaný obsah pre stiahnutie STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Zobraz umelú inteligenciu a nastavenia skriptu @@ -2931,7 +2936,8 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Predchá STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}PrejsÅ¥ na predchádzajúci normálny sprite, vynechajúc akékoľvek faloÅ¡né/prefarbené sprites a sprites fontu použité na zaÄiatku STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Reprezentuje aktuálne zvolený objekt. Zarovnanie je ignorované pri vykresľovaní objektu STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pri hýbaní objektom, sa menia X a Y súradnice -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X súradnica: {NUM}, Y súradnica: {NUM} +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X offset: {NUM}, Y offset: {NUM} (absolútne) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}X offset: {NUM}, Y offset: {NUM} (relatívne) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}VybraÅ¥ objekt STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Vyberte objekt z obrazovky @@ -3472,7 +3478,15 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Premenov STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}PremenovaÅ¥ typ lode STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}PremenovaÅ¥ typ lietadla +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}SkryÅ¥ +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}SkryÅ¥ +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}SkryÅ¥ +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}SkryÅ¥ +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}ZobraziÅ¥ +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}ZobraziÅ¥ +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}ZobraziÅ¥ +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}ZobraziÅ¥ STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}PremenovaÅ¥ typ vlaku diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index b56557c5d0..139647c505 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -11,7 +11,7 @@ ##case r d t -# $Id: slovenian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: slovenian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2976,7 +2976,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}PrejÅ¡nj STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Nadaljuj k prejÅ¡nji navadni sliÄici, zanemari vse navidezne/pobarvane/besedilne sliÄice in okvir na koncu STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Predstavitev trenutno izbrane sliÄice. Zamik je zanemarjen pri risanju te sliÄice STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Premakni sliÄico s spreminjanjem X in Y osi -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X zamik: {NUM}, Y zamik: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Izberi sliÄico STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Izberi sliÄico kjerkoli na zaslonu diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 6e3afb3ecd..267309d40e 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -11,7 +11,7 @@ ##gender m f -# $Id: spanish.txt 27114 2015-01-06 17:45:49Z translators $ +# $Id: spanish.txt 27180 2015-03-10 17:47:16Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -615,8 +615,8 @@ STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Mostrar ############ Those following lines need to be in this order!! STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vehículos: STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Estaciones: -STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Beneficio Min.: -STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Ingreso Min.: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Beneficio Mín.: +STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Ingreso Mín.: STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Ingreso Máx.: STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Entregado: STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Carga: @@ -2830,7 +2830,7 @@ STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Comproba STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Fichero: {SILVER}{STRING} STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING} STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versión: {SILVER}{NUM} -STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. versión compatible: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Mín. versión compatible: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parámetros: {SILVER}{STRING} @@ -2880,7 +2880,10 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite a STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Saltar al sprite anterior (ignorando pseudosprites, sprites recoloreados y sprites de fuente) y pasar del primer al último sprite STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representación del sprite seleccionado. Su alineamiento es ignorado al dibujarlo STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Mover el sprite, cambiando los ajustes X e Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Ajuste X: {NUM}, Ajuste Y: {NUM} +STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Reiniciar coordenadas relativas +STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Reinicia las coordenadas relativas actuales +STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}Coordenada X: {NUM}, Coordenada Y: {NUM} (Absoluta) +STR_SPRITE_ALIGNER_OFFSETS_REL :{BLACK}Coordenada X: {NUM}, Coordenada Y: {NUM} (Relativa) STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Seleccionar sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Seleccionar un sprite de cualquier parte de la pantalla @@ -3180,7 +3183,7 @@ STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Cambiar STR_EDIT_WAYPOINT_NAME :{WHITE}Editar nombre del punto de ruta # Finances window -STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finanzas {BLACK}{COMPANY_NUM} +STR_FINANCES_CAPTION :{WHITE}Finanzas de {COMPANY} {BLACK}{COMPANY_NUM} STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Gastos/Ingresos STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Construcción @@ -3528,10 +3531,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}locomotora STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Coste: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidad: {VELOCITY} Potencia: {POWER}{}Coste Operativo: {CURRENCY_LONG}/año{}Capacidad: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Coste: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidad: {VELOCITY} Potencia: {POWER} F.T. Máxima: {6:FORCE}{}Coste de operación: {4:CURRENCY_LONG}/año{}Capacidad: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Max.: {VELOCITY}{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Max.: {VELOCITY}{}Capacidad: {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Coste: {CURRENCY_LONG} Velocidad Max.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste de Operación: {CURRENCY_LONG}/año -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Max.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}{}Coste de Operación: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY}{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY}{}Capacidad: {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste de Operación: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}{}Coste de Operación: {CURRENCY_LONG}/año # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplazar {STRING} - {STRING} @@ -3654,9 +3657,9 @@ STR_VEHICLE_INFO_AGE :{COMMA} año{P STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} año{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidad Máx.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocidad Max.: {LTBLUE}{VELOCITY} {BLACK}Alcance: {LTBLUE}{COMMA} casillas -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidad Max.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidad Max.: {LTBLUE}{VELOCITY} {BLACK}F.T. Max.: {LTBLUE}{FORCE} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocidad Máx.: {LTBLUE}{VELOCITY} {BLACK}Alcance: {LTBLUE}{COMMA} casillas +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidad Máx.: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidad Máx.: {LTBLUE}{VELOCITY} {BLACK}F.T. Máx.: {LTBLUE}{FORCE} STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Beneficios este año: {LTBLUE}{CURRENCY_LONG} (último año: {CURRENCY_LONG}) STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilidad: {LTBLUE}{COMMA}% {BLACK}Averías desde el último mantenimiento: {LTBLUE}{COMMA} diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 002e105c77..92298f9939 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -10,7 +10,7 @@ ##grflangid 0x2e -# $Id: swedish.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: swedish.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Tidigare STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsätt till föregÃ¥ende normala spriteobjekt, ignorera eventuella pseudo/recolour/font spriteobjekt och börja om frÃ¥n slutet efter första spriteobjektet STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Representation av det valda objektet. Justeringen ignoreras när objektet ritas. STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flytta runt objektet, ändrar X och Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Välj objekt STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Välj ett objekt pÃ¥ bildskärmen diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 5aabb8890f..dca1709dbc 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -10,7 +10,7 @@ ##grflangid 0x0A -# $Id: tamil.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: tamil.txt 27177 2015-03-02 17:46:37Z translators $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -97,7 +97,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :கà¯à®³à®¿à®° STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :{COMMA}{NBSP} பயணி{P "" களà¯} STR_QUANTITY_COAL :{WEIGHT_LONG} நிலகà¯à®•ரி -STR_QUANTITY_MAIL :{COMMA} அஞà¯à®šà®²à¯ பை{P "" களà¯} +STR_QUANTITY_MAIL :{COMMA}{NBSP} அஞà¯à®šà®²à¯ பை{P "" களà¯} STR_QUANTITY_OIL :{VOLUME_LONG} எணà¯à®£à¯†à®¯à¯ STR_QUANTITY_LIVESTOCK :{COMMA} காலà¯à®¨à®Ÿà¯ˆ{P "" களà¯} STR_QUANTITY_GOODS :{COMMA} சரகà¯à®•à¯à®ªà¯ பெடà¯à®Ÿà®¿{P "" களà¯} @@ -248,6 +248,10 @@ STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Scroll b STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}சதà¯à®° நிலபà¯à®ªà®•à¯à®¤à®¿à®¯à®¿à®²à¯ கடà¯à®Ÿà®¿à®Ÿà®®à¯ போனà¯à®±à®µà®±à¯à®±à¯ˆ இடிகà¯à®•. Ctrl தேரà¯à®µà¯à®šà¯†à®¯à¯à®¤à®¿à®Ÿ. Shift உதà¯à®¤à¯‡à®š செலவை/கடà¯à®Ÿà®¿à®Ÿà®¤à¯à®¤à¯ˆ காடà¯à®Ÿà®¿à®Ÿ # Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}மறைநà¯à®¤à®¿à®°à¯à®ªà¯à®ªà®¤à¯ˆ காடà¯à®Ÿà¯ +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}மறைநà¯à®¤à®¿à®°à¯à®ªà¯à®ªà®¤à¯ˆ காடà¯à®Ÿà¯ +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}மறைநà¯à®¤à®¿à®°à¯à®ªà¯à®ªà®¤à¯ˆ காடà¯à®Ÿà¯ +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}மறைநà¯à®¤à®¿à®°à¯à®ªà¯à®ªà®¤à¯ˆ காடà¯à®Ÿà¯ # Query window @@ -389,6 +393,7 @@ STR_FILE_MENU_EXIT :வெளிய # map menu STR_MAP_MENU_MAP_OF_WORLD :உலகப௠படம௠STR_MAP_MENU_EXTRA_VIEW_PORT :கூடà¯à®¤à®²à¯ பாரà¯à®µà¯ˆà®ªà®Ÿà®®à¯ +STR_MAP_MENU_LINGRAPH_LEGEND :சரகà¯à®•௠செலà¯à®²à¯à®®à¯ வழிப௠படம௠STR_MAP_MENU_SIGN_LIST :கà¯à®±à®¿à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯ ############ range for town menu starts @@ -1062,7 +1067,7 @@ STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :நிறà¯à®µ STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}பகà¯à®ªà¯à®ªà¯: STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}வகை: -STR_CONFIG_SETTING_RESTRICT_BASIC :அடிபà¯à®ªà®Ÿà¯ˆ அமைபà¯à®ªà¯à®•ள௠+STR_CONFIG_SETTING_RESTRICT_BASIC :அடிபà¯à®ªà®Ÿà¯ˆ அமைபà¯à®ªà¯à®•ளை மடà¯à®Ÿà¯à®®à¯‡ காடà¯à®Ÿà¯ STR_CONFIG_SETTING_RESTRICT_ADVANCED :சிறபà¯à®ªà¯ அமைபà¯à®ªà¯à®•ள௠STR_CONFIG_SETTING_RESTRICT_ALL :அதிக / அனைதà¯à®¤à¯ அமைபà¯à®ªà¯à®•ள௠STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :à®®à¯à®¤à®²à®¿à®²à¯ இரà¯à®¨à¯à®¤ மதிபà¯à®ªà®¿à®©à¯ˆ மாறà¯à®±à®®à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ அமைபà¯à®ªà¯à®•ள௠@@ -2528,7 +2533,6 @@ STR_SPRITE_ALIGNER_CAPTION :{WHITE}ஸ௠STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}அடà¯à®¤à¯à®¤ ஸà¯à®ªà®¿à®°à¯ˆà®Ÿà¯à®Ÿà¯ STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}ஸà¯à®ªà®¿à®°à¯ˆà®Ÿà¯à®Ÿà¯à®¯à®¿à®±à¯à®•௠செலà¯à®²à®µà¯à®®à¯ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}à®®à¯à®¨à¯à®¤à¯ˆà®¯ ஸà¯à®ªà®¿à®°à¯ˆà®Ÿà¯à®Ÿà¯ -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}ஸà¯à®ªà®¿à®°à¯ˆà®Ÿà¯à®Ÿà®¿à®©à¯ˆà®¤à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯ STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}ஸà¯à®ªà®¿à®°à¯ˆà®Ÿà¯à®Ÿà®¿à®±à¯à®•௠செலà¯à®²à®µà¯à®®à¯ diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 2e66abb9a6..1e0d435b1d 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -10,7 +10,7 @@ ##grflangid 0x42 -# $Id: thai.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: thai.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2798,7 +2798,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}sprite STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}เคลื่อนไปยัง sprite ปà¸à¸•ิอันà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸² โดยข้าม pseudo/recolour/font à¹à¸¥à¸°à¸§à¸à¸à¸¥à¸±à¸šà¹€à¸¡à¸·à¹ˆà¸­à¸–ึงจุดเริ่มต้น STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}à¹à¸ªà¸”ง sprite ที่เลือà¸à¹ƒà¸«à¸¡à¹ˆà¸­à¸µà¸à¸„รั้ง STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}ย้าย sprite wxiv[q, à¹à¸à¹‰à¹„ขà¹à¸à¸™ X à¹à¸¥à¸° Y สำหรับความคลาดเคลื่อน -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X คลาดเคลื่อน: {NUM}, Y คลาดเคลื่อน: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}หยิบ sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}หยิบ sprite จาà¸à¸—ี่ใดà¸à¹‡à¸•ามในหน้าจอ diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 17be016467..b9c17ad82b 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -10,7 +10,7 @@ ##grflangid 0x0c -# $Id: traditional_chinese.txt 27156 2015-02-20 17:45:21Z translators $ +# $Id: traditional_chinese.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}上一 STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}繼續處ç†ä¸Šä¸€å€‹æ­£å¸¸çš„å­ç•«é¢ï¼Œç•¥éŽä»»ä½•è™›ä½ï¼é‡æ–°è‘—è‰²ï¼æ–‡å­—字型相關的å­ç•«é¢ï¼Œä¸¦åœ¨åˆ°é”第一個å­ç•«é¢å¾Œï¼Œè¿”回最後的å­ç•«é¢ç¹¼çºŒé€²è¡Œè™•ç†ã€‚ STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}顯示目å‰é¸å–çš„ sprite。當 sprite 正在æç¹ªæ™‚æœƒå¿½ç•¥å…¶å®šä½ STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}移動 sprite 到指定的 X åŠ Y 座標ä½ç§» -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X 座標ä½ç§»ï¼š{NUM}, Y 座標ä½ç§»ï¼š{NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}é¸å– Sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}請從畫é¢ä¸­ä»»æ„é¸å–一個 sprite diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index c637115914..f54d264225 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -11,7 +11,7 @@ ##case tamlanan -# $Id: turkish.txt 27142 2015-02-10 17:45:15Z translators $ +# $Id: turkish.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2809,7 +2809,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Önceki STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Tüm sahte/yeniden renklendirme/yazı tipi nesnelerini ve baÅŸtaki sargıyı atlayarak bir önceki normal nesneye geç STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Seçili nesnenin mevcut gösterimi. Bu nesneyi çizerken hizalama ihmal edilir STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Nesneyi X ve Y ofsetlerini deÄŸiÅŸtirerek gezdir -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X ofseti: {NUM}, Y ofseti: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Nesne seç STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Ekrandaki herhangi bir yerden bir nesne seçin diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 721b448a45..9634d5cd04 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -12,7 +12,7 @@ ##case r d z -# $Id: ukrainian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: ukrainian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2973,7 +2973,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Попе STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}ПовернутиÑÑ Ð´Ð¾ попереднього нормального Ñпрайту, пропуÑкаючи будь-Ñкі пÑевдоÑпрайти, Ñпрайти зі зміненими кольорами та шрифтові Ñпрайти, а також обгортки (wrap) навколо на початку STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¾Ð±Ñ€Ð°Ð½Ð¾Ð³Ð¾ Ñпрайту (Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ñ‚ÑŒÑÑ) STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Рухайте Ñпрайт навколо, змінюючи його Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð° X та Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð° X: {NUM}, Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð° Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Вибрати Ñпрайт STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Оберіть будь-Ñкий Ñпрайт на екрані diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt index 9a0436ee66..d76d986d7d 100644 --- a/src/lang/unfinished/frisian.txt +++ b/src/lang/unfinished/frisian.txt @@ -10,7 +10,7 @@ ##grflangid 0x32 -# $Id: frisian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: frisian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2392,7 +2392,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Foarig f STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Gean tebek nei de foarige ôfbylding, sla pseudo/werkleure/lettertype ôfbyldings oer en begjin wer oernei at it begjin berikke is STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Represintaasje fan de no selektearre ôfbylding. Dizze wurdt net rjochte by it tekenjen STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Ferweech de ôfbylding, feroarje de X en Y útslach -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Utslach X: {NUM}, Utslach Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Kies ôfbylding STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pak in ôfbylding fan alle lokaasjes op it skerm ôf diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt index cc12b5995c..1f07619133 100644 --- a/src/lang/unfinished/persian.txt +++ b/src/lang/unfinished/persian.txt @@ -10,7 +10,7 @@ ##grflangid 0x62 -# $Id: persian.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: persian.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2572,7 +2572,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}تصوی STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}نمایش تصویر عادی قبلی، بدون انجام دادن هر گونه تغییرات STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}نمایش تصویر انتخاب شده. تغییر مکان تصویر در زمان بارگزاری اعمال نمی شود STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}تغییر مکان تصویر، تغییر مقدار اضاÙÙ‡ شونده به X Ùˆ Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}مقدار اضاÙÙ‡ شونده به X: {NUM}, مقدار اضاÙÙ‡ شونده به Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}برداشتن تصویر STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}برداشتن یک تصویر از یک نقطه از ØµÙØ­Ù‡ نمایش diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 3d21a646a3..0b14aec746 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -10,7 +10,7 @@ ##grflangid 0x54 -# $Id: vietnamese.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: vietnamese.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2856,7 +2856,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite t STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Xá»­ lý sprite bình thưá»ng ở trước, bá» qua các loại pseudo/recolour/font sprite căn theo Ä‘iểm bắt đầu STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Theo những thông tin cá»§a sprite đã chá»n. Thì việc căn chỉnh khi vẽ đối vá»›i sprite này sẽ bị bá» qua STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Di chuyển sprite xung quanh, thay đổi X và Y offsets -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}X offset: {NUM}, Y offset: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Chá»n sprite STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Chá»n sprite ở bất cứ đâu trên màn hình diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 3c617df0bd..b7310f536d 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -10,7 +10,7 @@ ##grflangid 0x0f -# $Id: welsh.txt 27103 2015-01-01 20:51:18Z rubidium $ +# $Id: welsh.txt 27184 2015-03-13 20:53:29Z rubidium $ # This file is part of OpenTTD. # OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. @@ -2879,7 +2879,6 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Corlun b STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Mynd i'r corlun cyffredin blaenorol, gan hepgor unrhyw gorluniau ailliwio/ffont/llidgorluniau, ac amlapio o'r corlun cyntaf i'r olaf STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Cynrychioliad o'r corlun a ddewiswyd. Fe anwybyddir yr aliniad wrth lunio'r corlun STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Symud y corlun, gan newid yr atredau X ac Y -STR_SPRITE_ALIGNER_OFFSETS :{BLACK}Atred X: {NUM}, Atred Y: {NUM} STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Dewis corlun STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Dewis corlun o ynrhyw fan ar y sgrïn diff --git a/src/linkgraph/linkgraphjob.cpp b/src/linkgraph/linkgraphjob.cpp index 9099e62495..6283585c66 100644 --- a/src/linkgraph/linkgraphjob.cpp +++ b/src/linkgraph/linkgraphjob.cpp @@ -1,4 +1,4 @@ -/* $Id: linkgraphjob.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: linkgraphjob.cpp 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -21,6 +21,13 @@ LinkGraphJobPool _link_graph_job_pool("LinkGraphJob"); INSTANTIATE_POOL_METHODS(LinkGraphJob) +/** + * Static instance of an invalid path. + * Note: This instance is created on task start. + * Lazy creation on first usage results in a data race between the CDist threads. + */ +/* static */ Path *Path::invalid_path = new Path(INVALID_NODE, true); + /** * Create a link graph job from a link graph. The link graph will be copied so * that the calculations don't interfer with the normal operations on the diff --git a/src/linkgraph/linkgraphjob.h b/src/linkgraph/linkgraphjob.h index 48e690bbf9..d57f78dd6a 100644 --- a/src/linkgraph/linkgraphjob.h +++ b/src/linkgraph/linkgraphjob.h @@ -1,4 +1,4 @@ -/* $Id: linkgraphjob.h 26347 2014-02-16 18:42:59Z fonsinchen $ */ +/* $Id: linkgraphjob.h 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -343,6 +343,8 @@ public: */ class Path { public: + static Path *invalid_path; + Path(NodeID n, bool source = false); /** Get the node this leg passes. */ diff --git a/src/linkgraph/linkgraphschedule.cpp b/src/linkgraph/linkgraphschedule.cpp index 4d9d7c9f53..447347b7b6 100644 --- a/src/linkgraph/linkgraphschedule.cpp +++ b/src/linkgraph/linkgraphschedule.cpp @@ -1,4 +1,4 @@ -/* $Id: linkgraphschedule.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: linkgraphschedule.cpp 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -18,6 +18,13 @@ #include "../safeguards.h" +/** + * Static instance of LinkGraphSchedule. + * Note: This instance is created on task start. + * Lazy creation on first usage results in a data race between the CDist threads. + */ +/* static */ LinkGraphSchedule LinkGraphSchedule::instance; + /** * Start the next job in the schedule. */ @@ -68,9 +75,8 @@ void LinkGraphSchedule::JoinNext() /* static */ void LinkGraphSchedule::Run(void *j) { LinkGraphJob *job = (LinkGraphJob *)j; - LinkGraphSchedule *schedule = LinkGraphSchedule::Instance(); - for (uint i = 0; i < lengthof(schedule->handlers); ++i) { - schedule->handlers[i]->Run(*job); + for (uint i = 0; i < lengthof(instance.handlers); ++i) { + instance.handlers[i]->Run(*job); } } @@ -90,12 +96,11 @@ void LinkGraphSchedule::SpawnAll() */ /* static */ void LinkGraphSchedule::Clear() { - LinkGraphSchedule *inst = LinkGraphSchedule::Instance(); - for (JobList::iterator i(inst->running.begin()); i != inst->running.end(); ++i) { + for (JobList::iterator i(instance.running.begin()); i != instance.running.end(); ++i) { (*i)->JoinThread(); } - inst->running.clear(); - inst->schedule.clear(); + instance.running.clear(); + instance.schedule.clear(); } /** @@ -135,15 +140,6 @@ LinkGraphSchedule::~LinkGraphSchedule() } } -/** - * Retrieve the link graph schedule or create it if necessary. - */ -/* static */ LinkGraphSchedule *LinkGraphSchedule::Instance() -{ - static LinkGraphSchedule inst; - return &inst; -} - /** * Spawn or join a link graph job or compress a link graph if any link graph is * due to do so. @@ -153,9 +149,9 @@ void OnTick_LinkGraph() if (_date_fract != LinkGraphSchedule::SPAWN_JOIN_TICK) return; Date offset = _date % _settings_game.linkgraph.recalc_interval; if (offset == 0) { - LinkGraphSchedule::Instance()->SpawnNext(); + LinkGraphSchedule::instance.SpawnNext(); } else if (offset == _settings_game.linkgraph.recalc_interval / 2) { - LinkGraphSchedule::Instance()->JoinNext(); + LinkGraphSchedule::instance.JoinNext(); } } diff --git a/src/linkgraph/linkgraphschedule.h b/src/linkgraph/linkgraphschedule.h index 1d693da8f3..63f4a63067 100644 --- a/src/linkgraph/linkgraphschedule.h +++ b/src/linkgraph/linkgraphschedule.h @@ -1,4 +1,4 @@ -/* $Id: linkgraphschedule.h 26347 2014-02-16 18:42:59Z fonsinchen $ */ +/* $Id: linkgraphschedule.h 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -51,8 +51,8 @@ protected: public: /* This is a tick where not much else is happening, so a small lag might go unnoticed. */ static const uint SPAWN_JOIN_TICK = 21; ///< Tick when jobs are spawned or joined every day. + static LinkGraphSchedule instance; - static LinkGraphSchedule *Instance(); static void Run(void *j); static void Clear(); diff --git a/src/linkgraph/mcf.cpp b/src/linkgraph/mcf.cpp index bd3794a63a..6fed7adead 100644 --- a/src/linkgraph/mcf.cpp +++ b/src/linkgraph/mcf.cpp @@ -148,15 +148,14 @@ public: */ void SetNode(NodeID source, NodeID node) { - static const FlowStat::SharesMap empty; const FlowStatMap &flows = this->job[node].Flows(); FlowStatMap::const_iterator it = flows.find(this->job[source].Station()); if (it != flows.end()) { this->it = it->second.GetShares()->begin(); this->end = it->second.GetShares()->end(); } else { - this->it = empty.begin(); - this->end = empty.end(); + this->it = FlowStat::empty_sharesmap.begin(); + this->end = FlowStat::empty_sharesmap.end(); } } @@ -379,11 +378,10 @@ void MCF1stPass::EliminateCycle(PathVector &path, Path *cycle_begin, uint flow) */ bool MCF1stPass::EliminateCycles(PathVector &path, NodeID origin_id, NodeID next_id) { - static Path *invalid_path = new Path(INVALID_NODE, true); Path *at_next_pos = path[next_id]; /* this node has already been searched */ - if (at_next_pos == invalid_path) return false; + if (at_next_pos == Path::invalid_path) return false; if (at_next_pos == NULL) { /* Summarize paths; add up the paths with the same source and next hop @@ -431,7 +429,7 @@ bool MCF1stPass::EliminateCycles(PathVector &path, NodeID origin_id, NodeID next * could be found in this branch, thus it has to be searched again next * time we spot it. */ - path[next_id] = found ? NULL : invalid_path; + path[next_id] = found ? NULL : Path::invalid_path; return found; } diff --git a/src/misc.cpp b/src/misc.cpp index e2244c3623..f32cd7ad5e 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -110,7 +110,6 @@ void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settin InitializeEconomy(); ResetObjectToPlace(); - ResetRailPlacementSnapping(); GamelogReset(); GamelogStartAction(GLAT_START); diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 1d596ae3fe..574e784a2c 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: misc_gui.cpp 27134 2015-02-01 20:54:24Z frosch $ */ +/* $Id: misc_gui.cpp 27194 2015-03-17 22:08:48Z frosch $ */ /* * This file is part of OpenTTD. @@ -432,6 +432,7 @@ static const char * const _credits[] = { " Mike Ragsdale - OpenTTD installer", " Christian Rosentreter (tokai) - MorphOS / AmigaOS port", " Richard Kempton (richK) - additional airports, initial TGP implementation", + " Emperor Jake - titlegame", "", " Alberto Demichelis - Squirrel scripting language \xC2\xA9 2003-2008", " L. Peter Deutsch - MD5 implementation \xC2\xA9 1999, 2000, 2002", diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index 6bbc11bf76..b861cadac9 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_debug_gui.cpp 27134 2015-02-01 20:54:24Z frosch $ */ +/* $Id: newgrf_debug_gui.cpp 27174 2015-03-01 08:17:14Z alberth $ */ /* * This file is part of OpenTTD. @@ -806,8 +806,11 @@ GrfSpecFeature GetGrfSpecFeature(VehicleType type) /** Window used for aligning sprites. */ struct SpriteAlignerWindow : Window { - SpriteID current_sprite; ///< The currently shown sprite + typedef SmallPair XyOffs; ///< Pair for x and y offsets of the sprite before alignment. First value contains the x offset, second value y offset. + + SpriteID current_sprite; ///< The currently shown sprite. Scrollbar *vscroll; + SmallMap offs_start_map; ///< Mapping of starting offsets for the sprites which have been aligned in the sprite aligner window. SpriteAlignerWindow(WindowDesc *desc, WindowNumber wno) : Window(desc) { @@ -821,17 +824,31 @@ struct SpriteAlignerWindow : Window { virtual void SetStringParameters(int widget) const { + const Sprite *spr = GetSprite(this->current_sprite, ST_NORMAL); switch (widget) { case WID_SA_CAPTION: SetDParam(0, this->current_sprite); SetDParamStr(1, FioGetFilename(GetOriginFileSlot(this->current_sprite))); break; - case WID_SA_OFFSETS: { - const Sprite *spr = GetSprite(this->current_sprite, ST_NORMAL); + case WID_SA_OFFSETS_ABS: SetDParam(0, spr->x_offs); SetDParam(1, spr->y_offs); break; + + case WID_SA_OFFSETS_REL: { + /* Relative offset is new absolute offset - starting absolute offset. + * Show 0, 0 as the relative offsets if entry is not in the map (meaning they have not been changed yet). + */ + const SmallPair *key_offs_pair = this->offs_start_map.Find(this->current_sprite); + if (key_offs_pair != this->offs_start_map.End()) { + SetDParam(0, spr->x_offs - key_offs_pair->second.first); + SetDParam(1, spr->y_offs - key_offs_pair->second.second); + } else { + SetDParam(0, 0); + SetDParam(1, 0); + } + break; } default: @@ -856,20 +873,20 @@ struct SpriteAlignerWindow : Window { case WID_SA_SPRITE: { /* Center the sprite ourselves */ const Sprite *spr = GetSprite(this->current_sprite, ST_NORMAL); - int width = r.right - r.left + 1; - int height = r.bottom - r.top + 1; - int x = r.left - UnScaleGUI(spr->x_offs) + (width - UnScaleGUI(spr->width) ) / 2; - int y = r.top - UnScaleGUI(spr->y_offs) + (height - UnScaleGUI(spr->height)) / 2; + int width = r.right - r.left + 1 - WD_BEVEL_LEFT - WD_BEVEL_RIGHT; + int height = r.bottom - r.top + 1 - WD_BEVEL_TOP - WD_BEVEL_BOTTOM; + int x = -UnScaleGUI(spr->x_offs) + (width - UnScaleGUI(spr->width) ) / 2; + int y = -UnScaleGUI(spr->y_offs) + (height - UnScaleGUI(spr->height)) / 2; - /* And draw only the part within the sprite area */ - SubSprite subspr = { - spr->x_offs + (spr->width - UnScaleGUI(width) ) / 2 + 1, - spr->y_offs + (spr->height - UnScaleGUI(height)) / 2 + 1, - spr->x_offs + (spr->width + UnScaleGUI(width) ) / 2 - 1, - spr->y_offs + (spr->height + UnScaleGUI(height)) / 2 - 1, - }; + DrawPixelInfo new_dpi; + if (!FillDrawPixelInfo(&new_dpi, r.left + WD_BEVEL_LEFT, r.top + WD_BEVEL_TOP, width, height)) break; + DrawPixelInfo *old_dpi = _cur_dpi; + _cur_dpi = &new_dpi; + + DrawSprite(this->current_sprite, PAL_NONE, x, y, NULL, ZOOM_LVL_GUI); + + _cur_dpi = old_dpi; - DrawSprite(this->current_sprite, PAL_NONE, x, y, &subspr, ZOOM_LVL_GUI); break; } @@ -949,6 +966,11 @@ struct SpriteAlignerWindow : Window { * particular NewGRF developer. */ Sprite *spr = const_cast(GetSprite(this->current_sprite, ST_NORMAL)); + + /* Remember the original offsets of the current sprite, if not already in mapping. */ + if (!(this->offs_start_map.Contains(this->current_sprite))) { + this->offs_start_map.Insert(this->current_sprite, XyOffs(spr->x_offs, spr->y_offs)); + } switch (widget) { case WID_SA_UP: spr->y_offs--; break; case WID_SA_DOWN: spr->y_offs++; break; @@ -960,6 +982,12 @@ struct SpriteAlignerWindow : Window { MarkWholeScreenDirty(); break; } + + case WID_SA_RESET_REL: + /* Reset the starting offsets for the current sprite. */ + this->offs_start_map.Erase(this->current_sprite); + this->SetDirty(); + break; } } @@ -1035,8 +1063,12 @@ static const NWidgetPart _nested_sprite_aligner_widgets[] = { NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_SA_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SPRITE_ALIGNER_MOVE_TOOLTIP), SetResize(0, 0), NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), + NWidget(WWT_LABEL, COLOUR_GREY, WID_SA_OFFSETS_ABS), SetDataTip(STR_SPRITE_ALIGNER_OFFSETS_ABS, STR_NULL), SetFill(1, 0), SetPadding(0, 10, 0, 10), + NWidget(WWT_LABEL, COLOUR_GREY, WID_SA_OFFSETS_REL), SetDataTip(STR_SPRITE_ALIGNER_OFFSETS_REL, STR_NULL), SetFill(1, 0), SetPadding(0, 10, 0, 10), NWidget(NWID_HORIZONTAL), SetPIP(10, 5, 10), - NWidget(WWT_LABEL, COLOUR_GREY, WID_SA_OFFSETS), SetDataTip(STR_SPRITE_ALIGNER_OFFSETS, STR_NULL), SetFill(1, 0), + NWidget(NWID_SPACER), SetFill(1, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SA_RESET_REL), SetDataTip(STR_SPRITE_ALIGNER_RESET_BUTTON, STR_SPRITE_ALIGNER_RESET_TOOLTIP), SetFill(0, 0), + NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), SetPIP(10, 5, 10), diff --git a/src/os/windows/win32.h b/src/os/windows/win32.h index fc1ecd0be7..13c78b8c09 100644 --- a/src/os/windows/win32.h +++ b/src/os/windows/win32.h @@ -1,4 +1,4 @@ -/* $Id: win32.h 25676 2013-08-05 20:36:55Z michi_cc $ */ +/* $Id: win32.h 27176 2015-03-02 09:10:16Z planetmaker $ */ /* * This file is part of OpenTTD. @@ -35,7 +35,7 @@ TCHAR *convert_to_fs(const char *name, TCHAR *utf16_buf, size_t buflen, bool con HRESULT OTTDSHGetFolderPath(HWND, int, HANDLE, DWORD, LPTSTR); -#if defined(__MINGW32__) +#if defined(__MINGW32__) && !defined(__MINGW64__) #define SHGFP_TYPE_CURRENT 0 #endif /* __MINGW32__ */ diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 54b1f24858..f732b03a8f 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -44,7 +44,6 @@ typedef SmallVector TrainList; RailtypeInfo _railtypes[RAILTYPE_END]; -TileIndex _rail_track_endtile; ///< The end of a rail track; as hidden return from the rail build/remove command for GUI purposes. assert_compile(sizeof(_original_railtypes) <= sizeof(_railtypes)); @@ -417,8 +416,6 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u Track track = Extract(p2); CommandCost cost(EXPENSES_CONSTRUCTION); - _rail_track_endtile = INVALID_TILE; - if (!ValParamRailtype(railtype) || !ValParamTrackOrientation(track)) return CMD_ERROR; Slope tileh = GetTileSlope(tile); @@ -435,10 +432,7 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u ret = CheckTrackCombination(tile, trackbit, flags); if (ret.Succeeded()) ret = EnsureNoTrainOnTrack(tile, track); - if (ret.Failed()) { - if (ret.GetErrorMessage() == STR_ERROR_ALREADY_BUILT) _rail_track_endtile = tile; - return ret; - } + if (ret.Failed()) return ret; ret = CheckRailSlope(tileh, trackbit, GetTrackBits(tile), tile); if (ret.Failed()) return ret; @@ -527,7 +521,6 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u } if (IsLevelCrossing(tile) && GetCrossingRailBits(tile) == trackbit) { - _rail_track_endtile = tile; return_cmd_error(STR_ERROR_ALREADY_BUILT); } /* FALL THROUGH */ @@ -567,7 +560,6 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u } cost.AddCost(RailBuildCost(railtype)); - _rail_track_endtile = tile; return cost; } @@ -586,8 +578,6 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, CommandCost cost(EXPENSES_CONSTRUCTION); bool crossing = false; - _rail_track_endtile = INVALID_TILE; - if (!ValParamTrackOrientation(track)) return CMD_ERROR; TrackBits trackbit = TrackToTrackBits(track); @@ -714,7 +704,6 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, if (v != NULL) TryPathReserve(v, true); } - _rail_track_endtile = tile; return cost; } @@ -848,8 +837,6 @@ static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint3 bool remove = HasBit(p2, 7); RailType railtype = Extract(p2); - _rail_track_endtile = INVALID_TILE; - if ((!remove && !ValParamRailtype(railtype)) || !ValParamTrackOrientation(track)) return CMD_ERROR; if (p1 >= MapSize()) return CMD_ERROR; TileIndex end_tile = p1; @@ -861,12 +848,10 @@ static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint3 bool had_success = false; CommandCost last_error = CMD_ERROR; for (;;) { - TileIndex last_endtile = _rail_track_endtile; CommandCost ret = DoCommand(tile, remove ? 0 : railtype, TrackdirToTrack(trackdir), flags, remove ? CMD_REMOVE_SINGLE_RAIL : CMD_BUILD_SINGLE_RAIL); if (ret.Failed()) { last_error = ret; - if (_rail_track_endtile == INVALID_TILE) _rail_track_endtile = last_endtile; if (last_error.GetErrorMessage() != STR_ERROR_ALREADY_BUILT && !remove) { if (HasBit(p2, 8)) return last_error; break; diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 84314e55a2..7d4c88b8a3 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -52,14 +52,9 @@ static bool _convert_signal_button; ///< convert signal button in the s static SignalVariant _cur_signal_variant; ///< set the signal variant (for signal GUI) static SignalType _cur_signal_type; ///< set the signal type (for signal GUI) -extern TileIndex _rail_track_endtile; // rail_cmd.cpp - /* Map the setting: default_signal_type to the corresponding signal type */ static const SignalType _default_signal_type[] = {SIGTYPE_NORMAL, SIGTYPE_PBS, SIGTYPE_PBS_ONEWAY}; -static const int HOTKEY_POLYRAIL = 0x1000; -static const int HOTKEY_NEW_POLYRAIL = 0x1001; - struct RailStationGUISettings { Axis orientation; ///< Currently selected rail station orientation @@ -96,20 +91,13 @@ void CcPlaySound1E(const CommandCost &result, TileIndex tile, uint32 p1, uint32 if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_RAIL, tile); } -static CommandContainer GenericPlaceRailCmd(TileIndex tile, Track track) +static void GenericPlaceRail(TileIndex tile, int cmd) { - CommandContainer ret = { - tile, // tile - _cur_railtype, // p1 - track, // p2 - _remove_button_clicked ? - CMD_REMOVE_SINGLE_RAIL | CMD_MSG(STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK) : - CMD_BUILD_SINGLE_RAIL | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK), // cmd - CcPlaySound1E, // callback - "" // text - }; - - return ret; + DoCommandP(tile, _cur_railtype, cmd, + _remove_button_clicked ? + CMD_REMOVE_SINGLE_RAIL | CMD_MSG(STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK) : + CMD_BUILD_SINGLE_RAIL | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK), + CcPlaySound1E); } /** @@ -288,7 +276,6 @@ void CcBuildRailTunnel(const CommandCost &result, TileIndex tile, uint32 p1, uin if (result.Succeeded()) { if (_settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_RAIL, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); - StoreRailPlacementEndpoints(tile, _build_tunnel_endtile, TileX(tile) == TileX(_build_tunnel_endtile) ? TRACK_Y : TRACK_X, false); } else { SetRedErrorSquare(_build_tunnel_endtile); } @@ -318,7 +305,7 @@ static bool RailToolbar_CtrlChanged(Window *w) /* allow ctrl to switch remove mode only for these widgets */ for (uint i = WID_RAT_BUILD_NS; i <= WID_RAT_BUILD_STATION; i++) { - if ((i <= WID_RAT_POLYRAIL || i >= WID_RAT_BUILD_WAYPOINT) && w->IsWidgetLowered(i)) { + if ((i <= WID_RAT_AUTORAIL || i >= WID_RAT_BUILD_WAYPOINT) && w->IsWidgetLowered(i)) { ToggleRailButton_Remove(w); return true; } @@ -362,45 +349,25 @@ static void BuildRailClick_Remove(Window *w) } } -static CommandContainer DoRailroadTrackCmd(TileIndex start_tile, TileIndex end_tile, Track track) +static void DoRailroadTrack(int mode) { - CommandContainer ret = { - start_tile, // tile - end_tile, // p1 - _cur_railtype | (track << 4), // p2 - _remove_button_clicked ? - CMD_REMOVE_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK) : - CMD_BUILD_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK), // cmd - CcPlaySound1E, // callback - "" // text - }; - - return ret; + DoCommandP(TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y), _cur_railtype | (mode << 4), + _remove_button_clicked ? + CMD_REMOVE_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK) : + CMD_BUILD_RAILROAD_TRACK | CMD_MSG(STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK), + CcPlaySound1E); } static void HandleAutodirPlacement() { - Track track = (Track)(_thd.drawstyle & HT_DIR_MASK); // 0..5 - TileIndex start_tile = TileVirtXY(_thd.selstart.x, _thd.selstart.y); - TileIndex end_tile = TileVirtXY(_thd.selend.x, _thd.selend.y); + int trackstat = _thd.drawstyle & HT_DIR_MASK; // 0..5 - CommandContainer cmd = (_thd.drawstyle & HT_RAIL) ? - GenericPlaceRailCmd(end_tile, track) : // one tile case - DoRailroadTrackCmd(start_tile, end_tile, track); // multitile selection - - /* When overbuilding existing tracks in polyline mode we just want to move the - * snap point without altering the user with the "already built" error. Don't - * execute the command right away, firstly check if tracks are being overbuilt. */ - if (!(_thd.place_mode & HT_POLY) || _shift_pressed || - DoCommand(&cmd, DC_AUTO | DC_NO_WATER).GetErrorMessage() != STR_ERROR_ALREADY_BUILT) { - /* place tracks */ - if (!DoCommandP(&cmd)) return; + if (_thd.drawstyle & HT_RAIL) { // one tile case + GenericPlaceRail(TileVirtXY(_thd.selend.x, _thd.selend.y), trackstat); + return; } - /* save new snap points for the polyline tool */ - if (!_shift_pressed && _rail_track_endtile != INVALID_TILE) { - StoreRailPlacementEndpoints(start_tile, _rail_track_endtile, track, true); - } + DoRailroadTrack(trackstat); } /** @@ -494,7 +461,6 @@ struct BuildRailToolbarWindow : Window { this->GetWidget(WID_RAT_BUILD_EW)->widget_data = rti->gui_sprites.build_ew_rail; this->GetWidget(WID_RAT_BUILD_Y)->widget_data = rti->gui_sprites.build_y_rail; this->GetWidget(WID_RAT_AUTORAIL)->widget_data = rti->gui_sprites.auto_rail; - this->GetWidget(WID_RAT_POLYRAIL)->widget_data = rti->gui_sprites.auto_rail; this->GetWidget(WID_RAT_BUILD_DEPOT)->widget_data = rti->gui_sprites.build_depot; this->GetWidget(WID_RAT_CONVERT_RAIL)->widget_data = rti->gui_sprites.convert_rail; this->GetWidget(WID_RAT_BUILD_TUNNEL)->widget_data = rti->gui_sprites.build_tunnel; @@ -523,7 +489,6 @@ struct BuildRailToolbarWindow : Window { case WID_RAT_BUILD_EW: case WID_RAT_BUILD_Y: case WID_RAT_AUTORAIL: - case WID_RAT_POLYRAIL: case WID_RAT_BUILD_WAYPOINT: case WID_RAT_BUILD_STATION: case WID_RAT_BUILD_SIGNALS: @@ -555,15 +520,6 @@ struct BuildRailToolbarWindow : Window { } } - virtual void DrawWidget(const Rect &r, int widget) const - { - if (widget == WID_RAT_POLYRAIL) { - Dimension d = GetSpriteSize(SPR_BLOT); - uint offset = this->IsWidgetLowered(WID_RAT_POLYRAIL) ? 1 : 0; - DrawSprite(SPR_BLOT, PALETTE_TO_GREY, (r.left + r.right - d.width) / 2 + offset, (r.top + r.bottom - d.height) / 2 + offset); - } - } - virtual void OnClick(Point pt, int widget, int click_count) { if (widget < WID_RAT_BUILD_NS) return; @@ -595,40 +551,6 @@ struct BuildRailToolbarWindow : Window { this->last_user_action = widget; break; - case WID_RAT_POLYRAIL: { - bool was_snap = CurrentlySnappingRailPlacement(); - bool was_open = this->IsWidgetLowered(WID_RAT_POLYRAIL); - bool do_snap; - bool do_open; - /* "polyrail" hotkey - activate polyline tool in snapping mode, close the tool if snapping mode is already active - * "new_polyrail" hotkey - activate polyline tool in non-snapping (new line) mode, close the tool if non-snapping mode is already active - * button ctrl-clicking - switch between snapping and non-snapping modes, open the tool in non-snapping mode if it is closed - * button clicking - open the tool in non-snapping mode, close the tool if it is opened */ - if (this->last_user_action == HOTKEY_POLYRAIL) { - do_snap = true; - do_open = !was_open || !was_snap; - } else if (this->last_user_action == HOTKEY_NEW_POLYRAIL) { - do_snap = false; - do_open = !was_open || was_snap; - } else if (_ctrl_pressed) { - do_snap = !was_open || !was_snap; - do_open = true; - } else { - do_snap = false; - do_open = !was_open; - } - /* close the tool explicitly so it can be re-opened in different snapping mode */ - if (was_open) ResetObjectToPlace(); - /* open the tool in desired mode */ - if (do_open && HandlePlacePushButton(this, WID_RAT_POLYRAIL, GetRailTypeInfo(railtype)->cursor.autorail, do_snap ? (HT_RAIL | HT_POLY) : (HT_RAIL | HT_NEW_POLY))) { - /* if we are re-opening the tool but we couldn't switch the snapping - * then close the tool instead of appearing to be doing nothing */ - if (was_open && do_snap != CurrentlySnappingRailPlacement()) ResetObjectToPlace(); - } - this->last_user_action = WID_RAT_POLYRAIL; - break; - } - case WID_RAT_DEMOLISH: HandlePlacePushButton(this, WID_RAT_DEMOLISH, ANIMCURSOR_DEMOLISH, HT_RECT | HT_DIAGONAL); this->last_user_action = widget; @@ -693,15 +615,7 @@ struct BuildRailToolbarWindow : Window { virtual EventState OnHotkey(int hotkey) { MarkTileDirtyByTile(TileVirtXY(_thd.pos.x, _thd.pos.y)); // redraw tile selection - - if (hotkey == HOTKEY_POLYRAIL || hotkey == HOTKEY_NEW_POLYRAIL) { - /* Indicate to the OnClick that the action comes from a hotkey rather - * then from a click and that the CTRL state should be ignored. */ - this->last_user_action = hotkey; - hotkey = WID_RAT_POLYRAIL; - } - - return this->Window::OnHotkey(hotkey); + return Window::OnHotkey(hotkey); } virtual void OnPlaceObject(Point pt, TileIndex tile) @@ -724,7 +638,6 @@ struct BuildRailToolbarWindow : Window { break; case WID_RAT_AUTORAIL: - case WID_RAT_POLYRAIL: VpStartPlaceSizing(tile, VPM_RAILDIRS, DDSP_PLACE_RAIL); break; @@ -872,8 +785,6 @@ static EventState RailToolbarGlobalHotkeys(int hotkey) } const uint16 _railtoolbar_autorail_keys[] = {'5', 'A' | WKC_GLOBAL_HOTKEY, 0}; -const uint16 _railtoolbar_polyrail_keys[] = {'5' | WKC_CTRL, 'A' | WKC_CTRL | WKC_GLOBAL_HOTKEY, 0}; -const uint16 _railtoolbar_new_poly_keys[] = {'5' | WKC_CTRL | WKC_SHIFT, 'A' | WKC_CTRL | WKC_SHIFT | WKC_GLOBAL_HOTKEY, 0}; static Hotkey railtoolbar_hotkeys[] = { Hotkey('1', "build_ns", WID_RAT_BUILD_NS), @@ -881,8 +792,6 @@ static Hotkey railtoolbar_hotkeys[] = { Hotkey('3', "build_ew", WID_RAT_BUILD_EW), Hotkey('4', "build_y", WID_RAT_BUILD_Y), Hotkey(_railtoolbar_autorail_keys, "autorail", WID_RAT_AUTORAIL), - Hotkey(_railtoolbar_polyrail_keys, "polyrail", HOTKEY_POLYRAIL), - Hotkey(_railtoolbar_new_poly_keys, "new_polyrail", HOTKEY_NEW_POLYRAIL), Hotkey('6', "demolish", WID_RAT_DEMOLISH), Hotkey('7', "depot", WID_RAT_BUILD_DEPOT), Hotkey('8', "waypoint", WID_RAT_BUILD_WAYPOINT), @@ -913,8 +822,6 @@ static const NWidgetPart _nested_build_rail_widgets[] = { SetFill(0, 1), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_RAIL_NW, STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK), NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_RAT_AUTORAIL), SetFill(0, 1), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_AUTORAIL, STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL), - NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_RAT_POLYRAIL), - SetFill(0, 1), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_AUTORAIL, STR_RAIL_TOOLBAR_TOOLTIP_BUILD_POLYRAIL), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetMinimalSize(4, 22), SetDataTip(0x0, STR_NULL), EndContainer(), diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index d82ef40a99..2100fbb269 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: road_cmd.cpp 27157 2015-02-22 14:01:24Z frosch $ */ +/* $Id: road_cmd.cpp 27186 2015-03-14 14:27:07Z michi_cc $ */ /* * This file is part of OpenTTD. @@ -1156,16 +1156,15 @@ const byte _road_sloped_sprites[14] = { }; /** - * Whether to draw unpaved roads regardless of the town zone. - * By default, OpenTTD always draws roads as unpaved if they are on a desert - * tile or above the snowline. Newgrf files, however, can set a bit that allows - * paved roads to be built on desert tiles as they would be on grassy tiles. + * Should the road be drawn as a unpaved snow/desert road? + * By default, roads are always drawn as unpaved if they are on desert or + * above the snow line, but NewGRFs can override this for desert. * * @param tile The tile the road is on * @param roadside What sort of road this is - * @return True if the road should be drawn unpaved regardless of the roadside. + * @return True if snow/desert road sprites should be used. */ -static bool AlwaysDrawUnpavedRoads(TileIndex tile, Roadside roadside) +static bool DrawRoadAsSnowDesert(TileIndex tile, Roadside roadside) { return (IsOnSnow(tile) && !(_settings_game.game_creation.landscape == LT_TROPIC && HasGrfMiscBit(GMB_DESERT_PAVED_ROADS) && @@ -1245,7 +1244,7 @@ static void DrawRoadBits(TileInfo *ti) Roadside roadside = GetRoadside(ti->tile); - if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) { + if (DrawRoadAsSnowDesert(ti->tile, roadside)) { image += 19; } else { switch (roadside) { @@ -1328,7 +1327,7 @@ static void DrawTile_Road(TileInfo *ti) Roadside roadside = GetRoadside(ti->tile); - if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) { + if (DrawRoadAsSnowDesert(ti->tile, roadside)) { road += 19; } else { switch (roadside) { @@ -1354,7 +1353,7 @@ static void DrawTile_Road(TileInfo *ti) Roadside roadside = GetRoadside(ti->tile); - if (AlwaysDrawUnpavedRoads(ti->tile, roadside)) { + if (DrawRoadAsSnowDesert(ti->tile, roadside)) { image += 8; } else { switch (roadside) { diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index a7e94d2f12..90d84431e2 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: roadveh_cmd.cpp 27134 2015-02-01 20:54:24Z frosch $ */ +/* $Id: roadveh_cmd.cpp 27190 2015-03-16 20:01:14Z frosch $ */ /* * This file is part of OpenTTD. @@ -824,8 +824,9 @@ static void RoadVehCheckOvertake(RoadVehicle *v, RoadVehicle *u) if (v->state >= RVSB_IN_ROAD_STOP || !IsStraightRoadTrackdir((Trackdir)(v->state & RVSB_TRACKDIR_MASK))) return; /* Can't overtake a vehicle that is moving faster than us. If the vehicle in front is - * accelerating, take the maximum speed for the comparison, else the current speed. */ - int u_speed = u->GetAcceleration() > 0 ? u->GetCurrentMaxSpeed() : u->cur_speed; + * accelerating, take the maximum speed for the comparison, else the current speed. + * Original acceleration always accelerates, so always use the maximum speed. */ + int u_speed = (_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL || u->GetAcceleration() > 0) ? u->GetCurrentMaxSpeed() : u->cur_speed; if (u_speed >= v->GetCurrentMaxSpeed() && !(u->vehstatus & VS_STOPPED) && u->cur_speed != 0) { diff --git a/src/saveload/linkgraph_sl.cpp b/src/saveload/linkgraph_sl.cpp index 135b000dff..c6c890ed9a 100644 --- a/src/saveload/linkgraph_sl.cpp +++ b/src/saveload/linkgraph_sl.cpp @@ -1,4 +1,4 @@ -/* $Id: linkgraph_sl.cpp 26646 2014-06-14 13:35:39Z fonsinchen $ */ +/* $Id: linkgraph_sl.cpp 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -220,7 +220,7 @@ static void Load_LGRJ() */ static void Load_LGRS() { - SlObject(LinkGraphSchedule::Instance(), GetLinkGraphScheduleDesc()); + SlObject(&LinkGraphSchedule::instance, GetLinkGraphScheduleDesc()); } /** @@ -246,7 +246,7 @@ void AfterLoadLinkGraphs() } } - LinkGraphSchedule::Instance()->SpawnAll(); + LinkGraphSchedule::instance.SpawnAll(); } /** @@ -278,7 +278,7 @@ static void Save_LGRJ() */ static void Save_LGRS() { - SlObject(LinkGraphSchedule::Instance(), GetLinkGraphScheduleDesc()); + SlObject(&LinkGraphSchedule::instance, GetLinkGraphScheduleDesc()); } /** @@ -286,7 +286,7 @@ static void Save_LGRS() */ static void Ptrs_LGRS() { - SlObject(LinkGraphSchedule::Instance(), GetLinkGraphScheduleDesc()); + SlObject(&LinkGraphSchedule::instance, GetLinkGraphScheduleDesc()); } extern const ChunkHandler _linkgraph_chunk_handlers[] = { diff --git a/src/script/api/ai_changelog.hpp b/src/script/api/ai_changelog.hpp index 4e4d283345..0be461ca7d 100644 --- a/src/script/api/ai_changelog.hpp +++ b/src/script/api/ai_changelog.hpp @@ -1,4 +1,4 @@ -/* $Id: ai_changelog.hpp 27032 2014-10-23 09:47:15Z rubidium $ */ +/* $Id: ai_changelog.hpp 27195 2015-03-18 19:33:34Z frosch $ */ /* * This file is part of OpenTTD. @@ -17,8 +17,6 @@ * * \b 1.5.0 * - * 1.5.0 is not yet released. The following changes are not set in stone yet. - * * API additions: * \li AIList::SwapList * \li AIStation::GetCargoPlanned diff --git a/src/script/api/game/game_window.hpp.sq b/src/script/api/game/game_window.hpp.sq index e9c30c05cd..5bd288e31c 100644 --- a/src/script/api/game/game_window.hpp.sq +++ b/src/script/api/game/game_window.hpp.sq @@ -1,4 +1,4 @@ -/* $Id: game_window.hpp.sq 27152 2015-02-15 14:56:21Z frosch $ */ +/* $Id: game_window.hpp.sq 27174 2015-03-01 08:17:14Z alberth $ */ /* * This file is part of OpenTTD. @@ -774,10 +774,12 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_RIGHT, "WID_SA_RIGHT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_DOWN, "WID_SA_DOWN"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_SPRITE, "WID_SA_SPRITE"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_OFFSETS, "WID_SA_OFFSETS"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_OFFSETS_ABS, "WID_SA_OFFSETS_ABS"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_OFFSETS_REL, "WID_SA_OFFSETS_REL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_PICKER, "WID_SA_PICKER"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_LIST, "WID_SA_LIST"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_SCROLLBAR, "WID_SA_SCROLLBAR"); + SQGSWindow.DefSQConst(engine, ScriptWindow::WID_SA_RESET_REL, "WID_SA_RESET_REL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NP_SHOW_NUMPAR, "WID_NP_SHOW_NUMPAR"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NP_NUMPAR_DEC, "WID_NP_NUMPAR_DEC"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_NP_NUMPAR_INC, "WID_NP_NUMPAR_INC"); @@ -904,7 +906,6 @@ void SQGSWindow_Register(Squirrel *engine) SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RAT_BUILD_EW, "WID_RAT_BUILD_EW"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RAT_BUILD_Y, "WID_RAT_BUILD_Y"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RAT_AUTORAIL, "WID_RAT_AUTORAIL"); - SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RAT_POLYRAIL, "WID_RAT_POLYRAIL"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RAT_DEMOLISH, "WID_RAT_DEMOLISH"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RAT_BUILD_DEPOT, "WID_RAT_BUILD_DEPOT"); SQGSWindow.DefSQConst(engine, ScriptWindow::WID_RAT_BUILD_WAYPOINT, "WID_RAT_BUILD_WAYPOINT"); diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp index a22de93d13..bd28175070 100644 --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -1,4 +1,4 @@ -/* $Id: game_changelog.hpp 27164 2015-02-22 17:25:29Z alberth $ */ +/* $Id: game_changelog.hpp 27195 2015-03-18 19:33:34Z frosch $ */ /* * This file is part of OpenTTD. @@ -17,8 +17,6 @@ * * \b 1.5.0 * - * 1.5.0 is not yet released. The following changes are not set in stone yet. - * * API additions: * \li GSList::SwapList * \li GSStation::GetCargoPlanned diff --git a/src/script/api/script_window.hpp b/src/script/api/script_window.hpp index 7b3971db5a..d6e9ede63d 100644 --- a/src/script/api/script_window.hpp +++ b/src/script/api/script_window.hpp @@ -1,4 +1,4 @@ -/* $Id: script_window.hpp 27152 2015-02-15 14:56:21Z frosch $ */ +/* $Id: script_window.hpp 27174 2015-03-01 08:17:14Z alberth $ */ /* * This file is part of OpenTTD. @@ -1800,10 +1800,12 @@ public: WID_SA_RIGHT = ::WID_SA_RIGHT, ///< Move the sprite to the right. WID_SA_DOWN = ::WID_SA_DOWN, ///< Move the sprite down. WID_SA_SPRITE = ::WID_SA_SPRITE, ///< The actual sprite. - WID_SA_OFFSETS = ::WID_SA_OFFSETS, ///< The sprite offsets. + WID_SA_OFFSETS_ABS = ::WID_SA_OFFSETS_ABS, ///< The sprite offsets (absolute). + WID_SA_OFFSETS_REL = ::WID_SA_OFFSETS_REL, ///< The sprite offsets (relative). WID_SA_PICKER = ::WID_SA_PICKER, ///< Sprite picker. WID_SA_LIST = ::WID_SA_LIST, ///< Queried sprite list. WID_SA_SCROLLBAR = ::WID_SA_SCROLLBAR, ///< Scrollbar for sprite list. + WID_SA_RESET_REL = ::WID_SA_RESET_REL, ///< Reset relative sprite offset }; /* automatically generated from ../../widgets/newgrf_widget.h */ @@ -1982,7 +1984,6 @@ public: WID_RAT_BUILD_EW = ::WID_RAT_BUILD_EW, ///< Build rail along the game view X axis. WID_RAT_BUILD_Y = ::WID_RAT_BUILD_Y, ///< Build rail along the game grid Y axis. WID_RAT_AUTORAIL = ::WID_RAT_AUTORAIL, ///< Autorail tool. - WID_RAT_POLYRAIL = ::WID_RAT_POLYRAIL, ///< Polyline rail tool. WID_RAT_DEMOLISH = ::WID_RAT_DEMOLISH, ///< Destroy something with dynamite! WID_RAT_BUILD_DEPOT = ::WID_RAT_BUILD_DEPOT, ///< Build a depot. WID_RAT_BUILD_WAYPOINT = ::WID_RAT_BUILD_WAYPOINT, ///< Build a waypoint. diff --git a/src/station.cpp b/src/station.cpp index 553dd92dc4..79860877d2 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -1,4 +1,4 @@ -/* $Id: station.cpp 27030 2014-10-21 19:16:47Z rubidium $ */ +/* $Id: station.cpp 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -106,7 +106,7 @@ Station::~Station() } lg->RemoveNode(this->goods[c].node); if (lg->Size() == 0) { - LinkGraphSchedule::Instance()->Unqueue(lg); + LinkGraphSchedule::instance.Unqueue(lg); delete lg; } } diff --git a/src/station_base.h b/src/station_base.h index a05cc504b3..59ad126874 100644 --- a/src/station_base.h +++ b/src/station_base.h @@ -1,4 +1,4 @@ -/* $Id: station_base.h 26891 2014-09-21 16:19:52Z fonsinchen $ */ +/* $Id: station_base.h 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -37,6 +37,8 @@ class FlowStat { public: typedef std::map SharesMap; + static const SharesMap empty_sharesmap; + /** * Invalid constructor. This can't be called as a FlowStat must not be * empty. However, the constructor must be defined and reachable for diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 20b6474dae..ed0b4eeceb 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: station_cmd.cpp 26891 2014-09-21 16:19:52Z fonsinchen $ */ +/* $Id: station_cmd.cpp 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -58,6 +58,13 @@ #include "safeguards.h" +/** + * Static instance of FlowStat::SharesMap. + * Note: This instance is created on task start. + * Lazy creation on first usage results in a data race between the CDist threads. + */ +/* static */ const FlowStat::SharesMap FlowStat::empty_sharesmap; + /** * Check whether the given tile is a hangar. * @param t the tile to of whether it is a hangar. @@ -3536,7 +3543,7 @@ void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint c if (ge2.link_graph == INVALID_LINK_GRAPH) { if (LinkGraph::CanAllocateItem()) { lg = new LinkGraph(cargo); - LinkGraphSchedule::Instance()->Queue(lg); + LinkGraphSchedule::instance.Queue(lg); ge2.link_graph = lg->index; ge2.node = lg->AddNode(st2); } else { @@ -3558,11 +3565,11 @@ void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint c if (ge1.link_graph != ge2.link_graph) { LinkGraph *lg2 = LinkGraph::Get(ge2.link_graph); if (lg->Size() < lg2->Size()) { - LinkGraphSchedule::Instance()->Unqueue(lg); + LinkGraphSchedule::instance.Unqueue(lg); lg2->Merge(lg); // Updates GoodsEntries of lg lg = lg2; } else { - LinkGraphSchedule::Instance()->Unqueue(lg2); + LinkGraphSchedule::instance.Unqueue(lg2); lg->Merge(lg2); // Updates GoodsEntries of lg2 } } @@ -3684,7 +3691,7 @@ static uint UpdateStationWaiting(Station *st, CargoID type, uint amount, SourceT if (ge.link_graph == INVALID_LINK_GRAPH) { if (LinkGraph::CanAllocateItem()) { lg = new LinkGraph(type); - LinkGraphSchedule::Instance()->Queue(lg); + LinkGraphSchedule::instance.Queue(lg); ge.link_graph = lg->index; ge.node = lg->AddNode(st); } else { diff --git a/src/table/object_land.h b/src/table/object_land.h index 30948f41e1..b3a0104bb8 100644 --- a/src/table/object_land.h +++ b/src/table/object_land.h @@ -1,4 +1,4 @@ -/* $Id: object_land.h 25876 2013-10-17 21:41:17Z planetmaker $ */ +/* $Id: object_land.h 27183 2015-03-13 19:42:49Z rubidium $ */ /* * This file is part of OpenTTD. @@ -123,7 +123,7 @@ static const DrawTileSprites _object_hq[] = { #undef TILE_SPRITE_LINE -#define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, climate, gen_amount, flags) { GRFFilePropsBase<2>(), INVALID_OBJECT_CLASS, name, climate, size, build_cost_multiplier, clear_cost_multiplier, 0, 0xFFFFFFFF, flags, {0, 0, 0, 0}, 0, height, 1, gen_amount, true } +#define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, climate, gen_amount, flags) { GRFFilePropsBase<2>(), INVALID_OBJECT_CLASS, name, climate, size, build_cost_multiplier, clear_cost_multiplier, 0, MAX_DAY + 1, flags, {0, 0, 0, 0}, 0, height, 1, gen_amount, true } /* Climates * T = Temperate diff --git a/src/tilehighlight_func.h b/src/tilehighlight_func.h index 144c990f6a..f4d2c42059 100644 --- a/src/tilehighlight_func.h +++ b/src/tilehighlight_func.h @@ -14,7 +14,6 @@ #include "gfx_type.h" #include "tilehighlight_type.h" -#include "track_type.h" void PlaceProc_DemolishArea(TileIndex tile); bool GUIPlaceProcDragXY(ViewportDragDropSelectionProcess proc, TileIndex start_tile, TileIndex end_tile); @@ -31,10 +30,6 @@ void VpSetPlaceSizingLimit(int limit); void UpdateTileSelection(); -void StoreRailPlacementEndpoints(TileIndex start_tile, TileIndex end_tile, Track start_track, bool bidirectional = true); -void ResetRailPlacementSnapping(); -bool CurrentlySnappingRailPlacement(); - extern TileHighlightData _thd; #endif /* TILEHIGHLIGHT_FUNC_H */ diff --git a/src/tilehighlight_type.h b/src/tilehighlight_type.h index c751a79c55..8b765a5153 100644 --- a/src/tilehighlight_type.h +++ b/src/tilehighlight_type.h @@ -28,8 +28,6 @@ enum HighLightStyle { HT_RAIL = 0x080, ///< autorail (one piece), lower bits: direction HT_VEHICLE = 0x100, ///< vehicle is accepted as target as well (bitmask) HT_DIAGONAL = 0x200, ///< Also allow 'diagonal rectangles'. Only usable in combination with #HT_RECT or #HT_POINT. - HT_POLY = 0x400, ///< polyline mode; connect highlighted track with previous one - HT_NEW_POLY = 0xC00, ///< start completly new polyline; implies #HT_POLY HT_DRAG_MASK = 0x0F8, ///< Mask for the tile drag-type modes. /* lower bits (used with HT_LINE and HT_RAIL): @@ -56,15 +54,11 @@ struct TileHighlightData { Point new_pos; ///< New value for \a pos; used to determine whether to redraw the selection. Point new_size; ///< New value for \a size; used to determine whether to redraw the selection. - Point new_offs; ///< New value for \a offs; used to determine whether to redraw the selection. Point new_outersize; ///< New value for \a outersize; used to determine whether to redraw the selection. byte dirty; ///< Whether the build station window needs to redraw due to the changed selection. Point selstart; ///< The location where the dragging started. Point selend; ///< The location where the drag currently ends. - Point selstart2; ///< The location where the second segment of a polyline track starts. - Point selend2; ///< The location where the second segment of a polyline track ends. - HighLightStyle dir2; ///< Direction of the second segment of a polyline track, HT_DIR_END if second segment is not selected. HT_LINE drawstyle. byte sizelimit; ///< Whether the selection is limited in length, and what the maximum length is. HighLightStyle drawstyle; ///< Lower bits 0-3 are reserved for detailed highlight information. diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 44f7271e71..087d4eeadf 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: toolbar_gui.cpp 27150 2015-02-14 21:22:47Z frosch $ */ +/* $Id: toolbar_gui.cpp 27178 2015-03-07 18:27:01Z frosch $ */ /* * This file is part of OpenTTD. @@ -1125,7 +1125,7 @@ void SetStartingYear(Year year) _settings_game.game_creation.starting_year = Clamp(year, MIN_YEAR, MAX_YEAR); Date new_date = ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1); /* If you open a savegame as scenario there may already be link graphs.*/ - LinkGraphSchedule::Instance()->ShiftDates(new_date - _date); + LinkGraphSchedule::instance.ShiftDates(new_date - _date); SetDate(new_date, 0); } diff --git a/src/townname.cpp b/src/townname.cpp index 6e5f70923a..42f3f89787 100644 --- a/src/townname.cpp +++ b/src/townname.cpp @@ -1,4 +1,4 @@ -/* $Id: townname.cpp 26510 2014-04-25 17:35:29Z rubidium $ */ +/* $Id: townname.cpp 27187 2015-03-15 12:19:58Z frosch $ */ /* * This file is part of OpenTTD. @@ -635,7 +635,7 @@ static char *MakeCzechTownName(char *buf, const char *last, uint32 seed) choose = _name_czech_subst_full[stem].choose; allow = _name_czech_subst_full[stem].allow; } else { - unsigned int map[lengthof(_name_czech_subst_ending)]; + uint map[lengthof(_name_czech_subst_ending)]; int ending_start = -1, ending_stop = -1; /* Load the substantive */ diff --git a/src/viewport.cpp b/src/viewport.cpp index fe160df397..8257fafb6e 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -63,8 +63,6 @@ */ #include "stdafx.h" -#include "core/math_func.hpp" -#include "core/smallvec_type.hpp" #include "landscape.h" #include "viewport_func.h" #include "station_base.h" @@ -151,34 +149,6 @@ typedef SmallVector StringSpriteToDrawVector; typedef SmallVector ParentSpriteToDrawVector; typedef SmallVector ChildScreenSpriteToDrawVector; -enum RailSnapMode { - RSM_NO_SNAP, - RSM_SNAP_TO_TILE, - RSM_SNAP_TO_RAIL, -}; - -/** - * Snapping point for a track. - * - * Point where a track (rail/road/other) can be snapped to while selecting tracks with polyline - * tool (HT_POLY). Besides of x/y coordinates expressed in tile "units" it contains a set of - * allowed line directions. - */ -struct LineSnapPoint : Point { - uint8 dirs; ///< Allowed line directions, set of #Direction bits. -}; - -typedef SmallVector LineSnapPoints; ///< Set of snapping points - -/** Coordinates of a polyline track made of 2 connected line segments. */ -struct Polyline { - Point start; ///< The point where the first segment starts (as given in LineSnapPoint). - Direction first_dir; ///< Direction of the first line segment. - uint first_len; ///< Length of the first segment - number of track pieces. - Direction second_dir; ///< Direction of the second line segment. - uint second_len; ///< Length of the second segment - number of track pieces. -}; - /** Data structure storing rendering information */ struct ViewportDrawer { DrawPixelInfo dpi; @@ -210,16 +180,6 @@ bool _draw_dirty_blocks = false; uint _dirty_block_colour = 0; static VpSpriteSorter _vp_sprite_sorter = NULL; -static RailSnapMode _rail_snap_mode = RSM_NO_SNAP; ///< Type of rail track snapping (polyline tool). -static LineSnapPoints _tile_snap_points; ///< Tile to which a rail track will be snapped to (polyline tool). -static LineSnapPoints _rail_snap_points; ///< Set of points where a rail track will be snapped to (polyline tool). -static LineSnapPoint _current_snap_lock; ///< Start point and direction at which selected track is locked on currently (while dragging in polyline mode). - -static RailSnapMode GetRailSnapMode(); -static void SetRailSnapMode(RailSnapMode mode); -static TileIndex GetRailSnapTile(); -static void SetRailSnapTile(TileIndex tile); - static Point MapXYZToViewport(const ViewPort *vp, int x, int y, int z) { Point p = RemapCoords(x, y, z); @@ -854,17 +814,13 @@ static bool IsInRangeInclusive(int begin, int end, int check) } /** - * Checks whether a point is inside the selected rectangle given by _thd.size, _thd.pos and _thd.diagonal + * Checks whether a point is inside the selected a diagonal rectangle given by _thd.size and _thd.pos * @param x The x coordinate of the point to be checked. * @param y The y coordinate of the point to be checked. * @return True if the point is inside the rectangle, else false. */ -static bool IsInsideSelectedRectangle(int x, int y) +bool IsInsideRotatedRectangle(int x, int y) { - if (!_thd.diagonal) { - return IsInsideBS(x, _thd.pos.x, _thd.size.x) && IsInsideBS(y, _thd.pos.y, _thd.size.y); - } - int dist_a = (_thd.size.x + _thd.size.y); // Rotated coordinate system for selected rectangle. int dist_b = (_thd.size.x - _thd.size.y); // We don't have to divide by 2. It's all relative! int a = ((x - _thd.pos.x) + (y - _thd.pos.y)); // Rotated coordinate system for the point under scrutiny. @@ -981,45 +937,53 @@ static void DrawTileSelectionRect(const TileInfo *ti, PaletteID pal) DrawSelectionSprite(sel, pal, ti, 7, FOUNDATION_PART_NORMAL); } -static HighLightStyle GetPartOfAutoLine(int px, int py, const Point &selstart, const Point &selend, HighLightStyle dir) +static bool IsPartOfAutoLine(int px, int py) { - if (!IsInRangeInclusive(selstart.x & ~TILE_UNIT_MASK, selend.x & ~TILE_UNIT_MASK, px)) return HT_DIR_END; - if (!IsInRangeInclusive(selstart.y & ~TILE_UNIT_MASK, selend.y & ~TILE_UNIT_MASK, py)) return HT_DIR_END; + px -= _thd.selstart.x; + py -= _thd.selstart.y; - px -= selstart.x & ~TILE_UNIT_MASK; - py -= selstart.y & ~TILE_UNIT_MASK; + if ((_thd.drawstyle & HT_DRAG_MASK) != HT_LINE) return false; - switch (dir) { - case HT_DIR_X: return (py == 0) ? HT_DIR_X : HT_DIR_END; - case HT_DIR_Y: return (px == 0) ? HT_DIR_Y : HT_DIR_END; - case HT_DIR_HU: return (px == -py) ? HT_DIR_HU : (px == -py - (int)TILE_SIZE) ? HT_DIR_HL : HT_DIR_END; - case HT_DIR_HL: return (px == -py) ? HT_DIR_HL : (px == -py + (int)TILE_SIZE) ? HT_DIR_HU : HT_DIR_END; - case HT_DIR_VL: return (px == py) ? HT_DIR_VL : (px == py + (int)TILE_SIZE) ? HT_DIR_VR : HT_DIR_END; - case HT_DIR_VR: return (px == py) ? HT_DIR_VR : (px == py - (int)TILE_SIZE) ? HT_DIR_VL : HT_DIR_END; - default: NOT_REACHED(); break; + switch (_thd.drawstyle & HT_DIR_MASK) { + case HT_DIR_X: return py == 0; // x direction + case HT_DIR_Y: return px == 0; // y direction + case HT_DIR_HU: return px == -py || px == -py - 16; // horizontal upper + case HT_DIR_HL: return px == -py || px == -py + 16; // horizontal lower + case HT_DIR_VL: return px == py || px == py + 16; // vertical left + case HT_DIR_VR: return px == py || px == py - 16; // vertical right + default: + NOT_REACHED(); } - - return HT_DIR_END; } +/* [direction][side] */ +static const HighLightStyle _autorail_type[6][2] = { + { HT_DIR_X, HT_DIR_X }, + { HT_DIR_Y, HT_DIR_Y }, + { HT_DIR_HU, HT_DIR_HL }, + { HT_DIR_HL, HT_DIR_HU }, + { HT_DIR_VL, HT_DIR_VR }, + { HT_DIR_VR, HT_DIR_VL } +}; + #include "table/autorail.h" /** * Draws autorail highlights. * * @param *ti TileInfo Tile that is being drawn - * @param autorail_type \c HT_DIR_XXX, offset into _AutorailTilehSprite[][] - * @param pal Palette to use, -1 to autodetect + * @param autorail_type Offset into _AutorailTilehSprite[][] */ -static void DrawAutorailSelection(const TileInfo *ti, HighLightStyle autorail_type, PaletteID pal = -1) +static void DrawAutorailSelection(const TileInfo *ti, uint autorail_type) { SpriteID image; + PaletteID pal; int offset; FoundationPart foundation_part = FOUNDATION_PART_NORMAL; Slope autorail_tileh = RemoveHalftileSlope(ti->tileh); if (IsHalftileSlope(ti->tileh)) { - static const HighLightStyle _lower_rail[CORNER_END] = { HT_DIR_VR, HT_DIR_HU, HT_DIR_VL, HT_DIR_HL }; // CORNER_W, CORNER_S, CORNER_E, CORNER_N + static const uint _lower_rail[4] = { 5U, 2U, 4U, 3U }; Corner halftile_corner = GetHalftileSlopeCorner(ti->tileh); if (autorail_type != _lower_rail[halftile_corner]) { foundation_part = FOUNDATION_PART_HALFTILE; @@ -1028,17 +992,16 @@ static void DrawAutorailSelection(const TileInfo *ti, HighLightStyle autorail_ty } } - assert(autorail_type < HT_DIR_END); offset = _AutorailTilehSprite[autorail_tileh][autorail_type]; if (offset >= 0) { image = SPR_AUTORAIL_BASE + offset; - if (pal == (PaletteID)-1) pal = _thd.make_square_red ? PALETTE_SEL_TILE_RED : PAL_NONE; + pal = PAL_NONE; } else { image = SPR_AUTORAIL_BASE - offset; - if (pal == (PaletteID)-1) pal = PALETTE_SEL_TILE_RED; + pal = PALETTE_SEL_TILE_RED; } - DrawSelectionSprite(image, pal, ti, 7, foundation_part); + DrawSelectionSprite(image, _thd.make_square_red ? PALETTE_SEL_TILE_RED : pal, ti, 7, foundation_part); } /** @@ -1051,61 +1014,66 @@ static void DrawTileSelection(const TileInfo *ti) bool is_redsq = _thd.redsq == ti->tile; if (is_redsq) DrawTileSelectionRect(ti, PALETTE_TILE_RED_PULSATING); - switch (_thd.drawstyle & HT_DRAG_MASK) { - default: break; // No tile selection active? + /* No tile selection active? */ + if ((_thd.drawstyle & HT_DRAG_MASK) == HT_NONE) return; - case HT_RECT: - if (!is_redsq) { - if (IsInsideSelectedRectangle(ti->x, ti->y)) { - DrawTileSelectionRect(ti, _thd.make_square_red ? PALETTE_SEL_TILE_RED : PAL_NONE); - } else if (_thd.outersize.x > 0 && - /* Check if it's inside the outer area? */ - IsInsideBS(ti->x, _thd.pos.x + _thd.offs.x, _thd.size.x + _thd.outersize.x) && - IsInsideBS(ti->y, _thd.pos.y + _thd.offs.y, _thd.size.y + _thd.outersize.y)) { - /* Draw a blue rect. */ - DrawTileSelectionRect(ti, PALETTE_SEL_TILE_BLUE); + if (_thd.diagonal) { // We're drawing a 45 degrees rotated (diagonal) rectangle + if (IsInsideRotatedRectangle((int)ti->x, (int)ti->y)) goto draw_inner; + return; + } + + /* Inside the inner area? */ + if (IsInsideBS(ti->x, _thd.pos.x, _thd.size.x) && + IsInsideBS(ti->y, _thd.pos.y, _thd.size.y)) { +draw_inner: + if (_thd.drawstyle & HT_RECT) { + if (!is_redsq) DrawTileSelectionRect(ti, _thd.make_square_red ? PALETTE_SEL_TILE_RED : PAL_NONE); + } else if (_thd.drawstyle & HT_POINT) { + /* Figure out the Z coordinate for the single dot. */ + int z = 0; + FoundationPart foundation_part = FOUNDATION_PART_NORMAL; + if (ti->tileh & SLOPE_N) { + z += TILE_HEIGHT; + if (RemoveHalftileSlope(ti->tileh) == SLOPE_STEEP_N) z += TILE_HEIGHT; + } + if (IsHalftileSlope(ti->tileh)) { + Corner halftile_corner = GetHalftileSlopeCorner(ti->tileh); + if ((halftile_corner == CORNER_W) || (halftile_corner == CORNER_E)) z += TILE_HEIGHT; + if (halftile_corner != CORNER_S) { + foundation_part = FOUNDATION_PART_HALFTILE; + if (IsSteepSlope(ti->tileh)) z -= TILE_HEIGHT; } } - break; + DrawSelectionSprite(_cur_dpi->zoom <= ZOOM_LVL_DETAIL ? SPR_DOT : SPR_DOT_SMALL, PAL_NONE, ti, z, foundation_part); + } else if (_thd.drawstyle & HT_RAIL) { + /* autorail highlight piece under cursor */ + HighLightStyle type = _thd.drawstyle & HT_DIR_MASK; + assert(type < HT_DIR_END); + DrawAutorailSelection(ti, _autorail_type[type][0]); + } else if (IsPartOfAutoLine(ti->x, ti->y)) { + /* autorail highlighting long line */ + HighLightStyle dir = _thd.drawstyle & HT_DIR_MASK; + uint side; - case HT_POINT: - if (IsInsideSelectedRectangle(ti->x, ti->y)) { - /* Figure out the Z coordinate for the single dot. */ - int z = 0; - FoundationPart foundation_part = FOUNDATION_PART_NORMAL; - if (ti->tileh & SLOPE_N) { - z += TILE_HEIGHT; - if (RemoveHalftileSlope(ti->tileh) == SLOPE_STEEP_N) z += TILE_HEIGHT; - } - if (IsHalftileSlope(ti->tileh)) { - Corner halftile_corner = GetHalftileSlopeCorner(ti->tileh); - if ((halftile_corner == CORNER_W) || (halftile_corner == CORNER_E)) z += TILE_HEIGHT; - if (halftile_corner != CORNER_S) { - foundation_part = FOUNDATION_PART_HALFTILE; - if (IsSteepSlope(ti->tileh)) z -= TILE_HEIGHT; - } - } - DrawSelectionSprite(_cur_dpi->zoom <= ZOOM_LVL_DETAIL ? SPR_DOT : SPR_DOT_SMALL, PAL_NONE, ti, z, foundation_part); + if (dir == HT_DIR_X || dir == HT_DIR_Y) { + side = 0; + } else { + TileIndex start = TileVirtXY(_thd.selstart.x, _thd.selstart.y); + side = Delta(Delta(TileX(start), TileX(ti->tile)), Delta(TileY(start), TileY(ti->tile))); } - break; - case HT_RAIL: - if (ti->tile == TileVirtXY(_thd.pos.x, _thd.pos.y)) { - assert((_thd.drawstyle & HT_DIR_MASK) < HT_DIR_END); - DrawAutorailSelection(ti, _thd.drawstyle & HT_DIR_MASK); - } - break; - - case HT_LINE: { - HighLightStyle type = GetPartOfAutoLine(ti->x, ti->y, _thd.selstart, _thd.selend, _thd.drawstyle & HT_DIR_MASK); - if (type < HT_DIR_END) { - DrawAutorailSelection(ti, type); - } else if (_thd.dir2 < HT_DIR_END) { - type = GetPartOfAutoLine(ti->x, ti->y, _thd.selstart2, _thd.selend2, _thd.dir2); - if (type < HT_DIR_END) DrawAutorailSelection(ti, type, PALETTE_SEL_TILE_BLUE); - } - break; + DrawAutorailSelection(ti, _autorail_type[dir][side]); } + return; + } + + /* Check if it's inside the outer area? */ + if (!is_redsq && _thd.outersize.x > 0 && + IsInsideBS(ti->x, _thd.pos.x + _thd.offs.x, _thd.size.x + _thd.outersize.x) && + IsInsideBS(ti->y, _thd.pos.y + _thd.offs.y, _thd.size.y + _thd.outersize.y)) { + /* Draw a blue rect. */ + DrawTileSelectionRect(ti, PALETTE_SEL_TILE_BLUE); + return; } } @@ -1971,7 +1939,7 @@ static void SetSelectionTilesDirty() int x_start = _thd.pos.x; int y_start = _thd.pos.y; - if (_thd.outersize.x != 0 || _thd.outersize.y != 0) { + if (_thd.outersize.x != 0) { x_size += _thd.outersize.x; x_start += _thd.offs.x; y_size += _thd.outersize.y; @@ -2194,7 +2162,7 @@ static void PlaceObject() } -bool HandleViewportClicked(const ViewPort *vp, int x, int y, bool double_click) +bool HandleViewportClicked(const ViewPort *vp, int x, int y) { const Vehicle *v = CheckClickOnVehicle(vp, x, y); @@ -2204,18 +2172,6 @@ bool HandleViewportClicked(const ViewPort *vp, int x, int y, bool double_click) /* Vehicle placement mode already handled above. */ if ((_thd.place_mode & HT_DRAG_MASK) != HT_NONE) { - if (_thd.place_mode & HT_POLY) { - /* In polyline mode double-clicking on a single white line, finishes current polyline. - * If however the user double-clicks on a line that has a white and a blue section, - * both lines (white and blue) will be constructed consecutively. */ - static bool stop_snap_on_double_click = false; - if (double_click && stop_snap_on_double_click) { - SetRailSnapMode(RSM_NO_SNAP); - return true; - } - stop_snap_on_double_click = !(_thd.drawstyle & HT_LINE) || (_thd.dir2 == HT_DIR_END); - } - PlaceObject(); return true; } @@ -2342,8 +2298,8 @@ void SetTileSelectSize(int w, int h) void SetTileSelectBigSize(int ox, int oy, int sx, int sy) { - _thd.new_offs.x = ox * TILE_SIZE; - _thd.new_offs.y = oy * TILE_SIZE; + _thd.offs.x = ox * TILE_SIZE; + _thd.offs.y = oy * TILE_SIZE; _thd.new_outersize.x = sx * TILE_SIZE; _thd.new_outersize.y = sy * TILE_SIZE; } @@ -2383,36 +2339,7 @@ Window *TileHighlightData::GetCallbackWnd() return FindWindowById(this->window_class, this->window_number); } -static HighLightStyle CalcPolyrailDrawstyle(Point pt, bool dragging); -static inline void CalcNewPolylineOutersize() -{ - /* use the 'outersize' to mark the second (blue) part of a polyline selection */ - if (_thd.dir2 < HT_DIR_END) { - /* get bounds of the second part */ - int outer_x1 = _thd.selstart2.x & ~TILE_UNIT_MASK; - int outer_y1 = _thd.selstart2.y & ~TILE_UNIT_MASK; - int outer_x2 = _thd.selend2.x & ~TILE_UNIT_MASK; - int outer_y2 = _thd.selend2.y & ~TILE_UNIT_MASK; - if (outer_x1 > outer_x2) Swap(outer_x1, outer_x2); - if (outer_y1 > outer_y2) Swap(outer_y1, outer_y2); - /* include the first part */ - outer_x1 = min(outer_x1, _thd.new_pos.x); - outer_y1 = min(outer_y1, _thd.new_pos.y); - outer_x2 = max(outer_x2, _thd.new_pos.x + _thd.new_size.x - TILE_SIZE); - outer_y2 = max(outer_y2, _thd.new_pos.y + _thd.new_size.y - TILE_SIZE); - /* write new values */ - _thd.new_offs.x = outer_x1 - _thd.new_pos.x; - _thd.new_offs.y = outer_y1 - _thd.new_pos.y; - _thd.new_outersize.x = outer_x2 - outer_x1 + TILE_SIZE - _thd.new_size.x; - _thd.new_outersize.y = outer_y2 - outer_y1 + TILE_SIZE - _thd.new_size.y; - } else { - _thd.new_offs.x = 0; - _thd.new_offs.y = 0; - _thd.new_outersize.x = 0; - _thd.new_outersize.y = 0; - } -} /** * Updates tile highlighting for all cases. @@ -2469,42 +2396,10 @@ void UpdateTileSelection() y1 += TILE_SIZE / 2; break; case HT_RAIL: + /* Draw one highlighted tile in any direction */ + new_drawstyle = GetAutorailHT(pt.x, pt.y); + break; case HT_LINE: - /* HT_POLY */ - if (_thd.place_mode & HT_POLY) { - RailSnapMode snap_mode = GetRailSnapMode(); - if (snap_mode == RSM_NO_SNAP || - (snap_mode == RSM_SNAP_TO_TILE && GetRailSnapTile() == TileVirtXY(pt.x, pt.y))) { - new_drawstyle = GetAutorailHT(pt.x, pt.y); - _thd.new_offs.x = 0; - _thd.new_offs.y = 0; - _thd.new_outersize.x = 0; - _thd.new_outersize.y = 0; - _thd.dir2 = HT_DIR_END; - } else { - new_drawstyle = CalcPolyrailDrawstyle(pt, false); - if (new_drawstyle != HT_NONE) { - x1 = _thd.selstart.x & ~TILE_UNIT_MASK; - y1 = _thd.selstart.y & ~TILE_UNIT_MASK; - int x2 = _thd.selend.x & ~TILE_UNIT_MASK; - int y2 = _thd.selend.y & ~TILE_UNIT_MASK; - if (x1 > x2) Swap(x1, x2); - if (y1 > y2) Swap(y1, y2); - _thd.new_pos.x = x1; - _thd.new_pos.y = y1; - _thd.new_size.x = x2 - x1 + TILE_SIZE; - _thd.new_size.y = y2 - y1 + TILE_SIZE; - } - } - break; - } - /* HT_RAIL */ - if (_thd.place_mode & HT_RAIL) { - /* Draw one highlighted tile in any direction */ - new_drawstyle = GetAutorailHT(pt.x, pt.y); - break; - } - /* HT_LINE */ switch (_thd.place_mode & HT_DIR_MASK) { case HT_DIR_X: new_drawstyle = HT_LINE | HT_DIR_X; break; case HT_DIR_Y: new_drawstyle = HT_LINE | HT_DIR_Y; break; @@ -2523,8 +2418,6 @@ void UpdateTileSelection() } _thd.selstart.x = x1 & ~TILE_UNIT_MASK; _thd.selstart.y = y1 & ~TILE_UNIT_MASK; - _thd.selend.x = x1; - _thd.selend.y = y1; break; default: NOT_REACHED(); @@ -2535,13 +2428,10 @@ void UpdateTileSelection() } } - if (new_drawstyle & HT_LINE) CalcNewPolylineOutersize(); - /* redraw selection */ if (_thd.drawstyle != new_drawstyle || _thd.pos.x != _thd.new_pos.x || _thd.pos.y != _thd.new_pos.y || _thd.size.x != _thd.new_size.x || _thd.size.y != _thd.new_size.y || - _thd.offs.x != _thd.new_offs.x || _thd.offs.y != _thd.new_offs.y || _thd.outersize.x != _thd.new_outersize.x || _thd.outersize.y != _thd.new_outersize.y || _thd.diagonal != new_diagonal) { @@ -2551,7 +2441,6 @@ void UpdateTileSelection() _thd.drawstyle = new_drawstyle; _thd.pos = _thd.new_pos; _thd.size = _thd.new_size; - _thd.offs = _thd.new_offs; _thd.outersize = _thd.new_outersize; _thd.diagonal = new_diagonal; _thd.dirty = 0xff; @@ -2601,11 +2490,6 @@ void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, ViewportDrag } else if (_thd.place_mode & (HT_RAIL | HT_LINE)) { _thd.place_mode = HT_SPECIAL | others; _thd.next_drawstyle = _thd.drawstyle | others; - _current_snap_lock.x = -1; - if ((_thd.place_mode & HT_POLY) != 0 && GetRailSnapMode() == RSM_NO_SNAP) { - SetRailSnapMode(RSM_SNAP_TO_TILE); - SetRailSnapTile(tile); - } } else { _thd.place_mode = HT_SPECIAL | others; _thd.next_drawstyle = HT_POINT | others; @@ -2797,31 +2681,7 @@ static int CalcHeightdiff(HighLightStyle style, uint distance, TileIndex start_t return (int)(h1 - h0) * TILE_HEIGHT_STEP; } -static void ShowLengthMeasurement(HighLightStyle style, TileIndex start_tile, TileIndex end_tile, TooltipCloseCondition close_cond = TCC_LEFT_CLICK, bool show_single_tile_length = false) -{ - static const StringID measure_strings_length[] = {STR_NULL, STR_MEASURE_LENGTH, STR_MEASURE_LENGTH_HEIGHTDIFF}; - - if (_settings_client.gui.measure_tooltip) { - uint distance = DistanceManhattan(start_tile, end_tile) + 1; - byte index = 0; - uint64 params[2]; - - if (show_single_tile_length || distance != 1) { - int heightdiff = CalcHeightdiff(style, distance, start_tile, end_tile); - /* If we are showing a tooltip for horizontal or vertical drags, - * 2 tiles have a length of 1. To bias towards the ceiling we add - * one before division. It feels more natural to count 3 lengths as 2 */ - if ((style & HT_DIR_MASK) != HT_DIR_X && (style & HT_DIR_MASK) != HT_DIR_Y) { - distance = CeilDiv(distance, 2); - } - - params[index++] = distance; - if (heightdiff != 0) params[index++] = heightdiff; - } - - ShowMeasurementTooltips(measure_strings_length[index], index, params, close_cond); - } -} +static const StringID measure_strings_length[] = {STR_NULL, STR_MEASURE_LENGTH, STR_MEASURE_LENGTH_HEIGHTDIFF}; /** * Check for underflowing the map. @@ -2852,170 +2712,6 @@ static void CheckOverflow(int &test, int &other, int max, int mult) test = max; } -static const uint X_DIRS = (1 << DIR_NE) | (1 << DIR_SW); -static const uint Y_DIRS = (1 << DIR_SE) | (1 << DIR_NW); -static const uint HORZ_DIRS = (1 << DIR_W) | (1 << DIR_E); -static const uint VERT_DIRS = (1 << DIR_N) | (1 << DIR_S); - -Trackdir PointDirToTrackdir(const Point &pt, Direction dir) -{ - Trackdir ret; - - if (IsDiagonalDirection(dir)) { - ret = DiagDirToDiagTrackdir(DirToDiagDir(dir)); - } else { - int x = pt.x & TILE_UNIT_MASK; - int y = pt.y & TILE_UNIT_MASK; - int ns = x + y; - int we = y - x; - if (HasBit(HORZ_DIRS, dir)) { - ret = TrackDirectionToTrackdir(ns < (int)TILE_SIZE ? TRACK_UPPER : TRACK_LOWER, dir); - } else { - ret = TrackDirectionToTrackdir(we < 0 ? TRACK_LEFT : TRACK_RIGHT, dir); - } - } - - return ret; -} - -static bool FindPolyline(const Point &pt, const LineSnapPoint &start, Polyline *ret) -{ - /* relative coordinats of the mouse point (offset against the snap point) */ - int x = pt.x - start.x; - int y = pt.y - start.y; - int we = y - x; - int ns = x + y; - - /* in-tile alignment of the snap point (there are two variants: [0, 8] or [8, 0]) */ - uint align_x = start.x & TILE_UNIT_MASK; - uint align_y = start.y & TILE_UNIT_MASK; - assert((align_x == TILE_SIZE / 2 && align_y == 0 && !(start.dirs & X_DIRS)) || (align_x == 0 && align_y == TILE_SIZE / 2 && !(start.dirs & Y_DIRS))); - - /* absolute distance between points (in tiles) */ - uint d_x = abs(RoundDivSU(x < 0 ? x - align_y : x + align_y, TILE_SIZE)); - uint d_y = abs(RoundDivSU(y < 0 ? y - align_x : y + align_x, TILE_SIZE)); - uint d_ns = abs(RoundDivSU(ns, TILE_SIZE)); - uint d_we = abs(RoundDivSU(we, TILE_SIZE)); - - /* Find on which quadrant is the mouse point (reltively to the snap point). - * Numeration (clockwise like in Direction): - * ortho diag - * \ 2 / 2 | 3 - * \ / --+---> [we] - * 1 X 3 1 | 0 - * / \ v - * [x] 0 [y] [ns] */ - uint ortho_quadrant = 2 * (x < 0) + ((x < 0) != (y < 0)); // implicit cast: false/true --> 0/1 - uint diag_quadrant = 2 * (ns < 0) + ((ns < 0) != (we < 0)); - - /* direction from the snap point to the mouse point */ - Direction ortho_line_dir = ChangeDir(DIR_S, (DirDiff)(2 * ortho_quadrant)); // DIR_S is the middle of the ortho quadrant no. 0 - Direction diag_line_dir = ChangeDir(DIR_SE, (DirDiff)(2 * diag_quadrant)); // DIR_SE is the middle of the diag quadrant no. 0 - if (!HasBit(start.dirs, ortho_line_dir) && !HasBit(start.dirs, diag_line_dir)) return false; - - /* length of booth segments of auto line (choosing orthogonal direction first) */ - uint ortho_len = 0, ortho_len2 = 0; - if (HasBit(start.dirs, ortho_line_dir)) { - bool is_len_even = (align_x != 0) ? d_x >= d_y : d_x <= d_y; - ortho_len = 2 * min(d_x, d_y) - (int)is_len_even; - assert((int)ortho_len >= 0); - if (d_ns == 0 || d_we == 0) { // just single segment? - ortho_len++; - } else { - ortho_len2 = abs((int)d_x - (int)d_y) + (int)is_len_even; - } - } - - /* length of booth segments of auto line (choosing diagonal direction first) */ - uint diag_len = 0, diag_len2 = 0; - if (HasBit(start.dirs, diag_line_dir)) { - if (d_x == 0 || d_y == 0) { // just single segment? - diag_len = d_x + d_y; - } else { - diag_len = min(d_ns, d_we); - diag_len2 = d_x + d_y - diag_len; - } - } - - /* choose the best variant */ - if (ortho_len != 0 && diag_len != 0) { - /* in the first place, choose this line whose first segment ends up closer - * to the mouse point (thus the second segment is shorter) */ - int cmp = ortho_len2 - diag_len2; - /* if equeal, choose the shorter line */ - if (cmp == 0) cmp = ortho_len - diag_len; - /* finally look at small "units" and choose the line which is closer to the mouse point */ - if (cmp == 0) cmp = min(abs(we), abs(ns)) - min(abs(x), abs(y)); - /* based on comparison, disable one of variants */ - if (cmp > 0) { - ortho_len = 0; - } else { - diag_len = 0; - } - } - - /* store results */ - if (ortho_len != 0) { - ret->first_dir = ortho_line_dir; - ret->first_len = ortho_len; - ret->second_dir = (ortho_len2 != 0) ? diag_line_dir : INVALID_DIR; - ret->second_len = ortho_len2; - } else if (diag_len != 0) { - ret->first_dir = diag_line_dir; - ret->first_len = diag_len; - ret->second_dir = (diag_len2 != 0) ? ortho_line_dir : INVALID_DIR; - ret->second_len = diag_len2; - } else { - return false; - } - - ret->start = start; - return true; -} - -/** - * Calculate squared euclidean distance between two points. - * @param a the first point - * @param b the second point - * @return |b - a| ^ 2 - */ -static inline uint SqrDist(const Point &a, const Point &b) -{ - return (b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y); -} - -static LineSnapPoint *FindBestPolyline(const Point &pt, LineSnapPoint *snap_points, uint num_points, Polyline *ret) -{ - /* Find the best polyline (a pair of two lines - the white one and the blue - * one) led from any of saved snap points to the mouse cursor. */ - - LineSnapPoint *best_snap_point = NULL; // the best polyline we found so far is led from this snap point - - for (int i = 0; i < (int)num_points; i++) { - /* try to fit a polyline */ - Polyline polyline; - if (!FindPolyline(pt, snap_points[i], &polyline)) continue; // skip non-matching snap points - /* check whether we've found a better polyline */ - if (best_snap_point != NULL) { - /* firstly choose shorter polyline (the one with smaller amount of - * track pieces composing booth the white and the blue line) */ - uint cur_len = polyline.first_len + polyline.second_len; - uint best_len = ret->first_len + ret->second_len; - if (cur_len > best_len) continue; - /* secondly choose that polyline which has longer first (white) line */ - if (cur_len == best_len && polyline.first_len < ret->first_len) continue; - /* finally check euclidean distance to snap points and choose the - * one which is closer */ - if (cur_len == best_len && polyline.first_len == ret->first_len && SqrDist(pt, snap_points[i]) >= SqrDist(pt, *best_snap_point)) continue; - } - /* save the found polyline */ - *ret = polyline; - best_snap_point = &snap_points[i]; - } - - return best_snap_point; -} - /** while dragging */ static void CalcRaildirsDrawstyle(int x, int y, int method) { @@ -3202,83 +2898,32 @@ static void CalcRaildirsDrawstyle(int x, int y, int method) } } + if (_settings_client.gui.measure_tooltip) { + TileIndex t0 = TileVirtXY(_thd.selstart.x, _thd.selstart.y); + TileIndex t1 = TileVirtXY(x, y); + uint distance = DistanceManhattan(t0, t1) + 1; + byte index = 0; + uint64 params[2]; + + if (distance != 1) { + int heightdiff = CalcHeightdiff(b, distance, t0, t1); + /* If we are showing a tooltip for horizontal or vertical drags, + * 2 tiles have a length of 1. To bias towards the ceiling we add + * one before division. It feels more natural to count 3 lengths as 2 */ + if ((b & HT_DIR_MASK) != HT_DIR_X && (b & HT_DIR_MASK) != HT_DIR_Y) { + distance = CeilDiv(distance, 2); + } + + params[index++] = distance; + if (heightdiff != 0) params[index++] = heightdiff; + } + + ShowMeasurementTooltips(measure_strings_length[index], index, params); + } + _thd.selend.x = x; _thd.selend.y = y; - _thd.dir2 = HT_DIR_END; _thd.next_drawstyle = b; - - ShowLengthMeasurement(b, TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y)); -} - -static HighLightStyle CalcPolyrailDrawstyle(Point pt, bool dragging) -{ - RailSnapMode snap_mode = GetRailSnapMode(); - - /* are we only within one tile? */ - if (snap_mode == RSM_SNAP_TO_TILE && GetRailSnapTile() == TileVirtXY(pt.x, pt.y)) { - _thd.selend.x = pt.x; - _thd.selend.y = pt.y; - return GetAutorailHT(pt.x, pt.y); - } - - /* find the best track */ - Polyline line; - - bool lock_snapping = dragging && snap_mode == RSM_SNAP_TO_RAIL; - if (!lock_snapping) _current_snap_lock.x = -1; - - const LineSnapPoint *snap_point; - if (_current_snap_lock.x != -1) { - snap_point = FindBestPolyline(pt, &_current_snap_lock, 1, &line); - } else if (snap_mode == RSM_SNAP_TO_TILE) { - snap_point = FindBestPolyline(pt, _tile_snap_points.Begin(), _tile_snap_points.Length(), &line); - } else { - assert(snap_mode == RSM_SNAP_TO_RAIL); - snap_point = FindBestPolyline(pt, _rail_snap_points.Begin(), _rail_snap_points.Length(), &line); - } - - if (snap_point == NULL) return HT_NONE; // no match - - if (lock_snapping && _current_snap_lock.x == -1) { - /* lock down the snap point */ - _current_snap_lock = *snap_point; - _current_snap_lock.dirs &= (1 << line.first_dir) | (1 << ReverseDir(line.first_dir)); - } - - TileIndexDiffC first_dir = TileIndexDiffCByDir(line.first_dir); - _thd.selstart.x = line.start.x; - _thd.selstart.y = line.start.y; - _thd.selend.x = _thd.selstart.x + line.first_len * first_dir.x * (IsDiagonalDirection(line.first_dir) ? TILE_SIZE : TILE_SIZE / 2); - _thd.selend.y = _thd.selstart.y + line.first_len * first_dir.y * (IsDiagonalDirection(line.first_dir) ? TILE_SIZE : TILE_SIZE / 2); - _thd.selstart2.x = _thd.selend.x; - _thd.selstart2.y = _thd.selend.y; - _thd.selstart.x += first_dir.x; - _thd.selstart.y += first_dir.y; - _thd.selend.x -= first_dir.x; - _thd.selend.y -= first_dir.y; - Trackdir seldir = PointDirToTrackdir(_thd.selstart, line.first_dir); - _thd.selstart.x &= ~TILE_UNIT_MASK; - _thd.selstart.y &= ~TILE_UNIT_MASK; - - if (line.second_len != 0) { - TileIndexDiffC second_dir = TileIndexDiffCByDir(line.second_dir); - _thd.selend2.x = _thd.selstart2.x + line.second_len * second_dir.x * (IsDiagonalDirection(line.second_dir) ? TILE_SIZE : TILE_SIZE / 2); - _thd.selend2.y = _thd.selstart2.y + line.second_len * second_dir.y * (IsDiagonalDirection(line.second_dir) ? TILE_SIZE : TILE_SIZE / 2); - _thd.selstart2.x += second_dir.x; - _thd.selstart2.y += second_dir.y; - _thd.selend2.x -= second_dir.x; - _thd.selend2.y -= second_dir.y; - Trackdir seldir2 = PointDirToTrackdir(_thd.selstart2, line.second_dir); - _thd.selstart2.x &= ~TILE_UNIT_MASK; - _thd.selstart2.y &= ~TILE_UNIT_MASK; - _thd.dir2 = (HighLightStyle)TrackdirToTrack(seldir2); - } else { - _thd.dir2 = HT_DIR_END; - } - - HighLightStyle ret = HT_LINE | (HighLightStyle)TrackdirToTrack(seldir); - ShowLengthMeasurement(ret, TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y), TCC_HOVER, true); - return ret; } /** @@ -3298,12 +2943,6 @@ void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method) return; } - if ((_thd.place_mode & HT_POLY) && GetRailSnapMode() != RSM_NO_SNAP) { - Point pt = { x, y }; - _thd.next_drawstyle = CalcPolyrailDrawstyle(pt, true); - return; - } - /* Special handling of drag in any (8-way) direction */ if (method & (VPM_RAILDIRS | VPM_SIGNALDIRS)) { _thd.selend.x = x; @@ -3356,12 +2995,27 @@ calc_heightdiff_single_direction:; x = sx + Clamp(x - sx, -limit, limit); y = sy + Clamp(y - sy, -limit, limit); } - /* With current code passing a HT_LINE style to calculate the height - * difference is enough. However if/when a point-tool is created - * with this method, function should be called with new_style (below) - * instead of HT_LINE | style case HT_POINT is handled specially - * new_style := (_thd.next_drawstyle & HT_RECT) ? HT_LINE | style : _thd.next_drawstyle; */ - ShowLengthMeasurement(HT_LINE | style, TileVirtXY(sx, sy), TileVirtXY(x, y)); + if (_settings_client.gui.measure_tooltip) { + TileIndex t0 = TileVirtXY(sx, sy); + TileIndex t1 = TileVirtXY(x, y); + uint distance = DistanceManhattan(t0, t1) + 1; + byte index = 0; + uint64 params[2]; + + if (distance != 1) { + /* With current code passing a HT_LINE style to calculate the height + * difference is enough. However if/when a point-tool is created + * with this method, function should be called with new_style (below) + * instead of HT_LINE | style case HT_POINT is handled specially + * new_style := (_thd.next_drawstyle & HT_RECT) ? HT_LINE | style : _thd.next_drawstyle; */ + int heightdiff = CalcHeightdiff(HT_LINE | style, 0, t0, t1); + + params[index++] = distance; + if (heightdiff != 0) params[index++] = heightdiff; + } + + ShowMeasurementTooltips(measure_strings_length[index], index, params); + } break; case VPM_X_AND_Y_LIMITED: // Drag an X by Y constrained rect area. @@ -3440,7 +3094,6 @@ calc_heightdiff_single_direction:; _thd.selend.x = x; _thd.selend.y = y; - _thd.dir2 = HT_DIR_END; } /** @@ -3458,10 +3111,11 @@ EventState VpHandlePlaceSizingDrag() return ES_HANDLED; } - /* While dragging execute the drag procedure of the corresponding window (mostly VpSelectTilesWithMethod() ). - * Do it even if the button is no longer pressed to make sure that OnPlaceDrag was called at least once. */ - w->OnPlaceDrag(_thd.select_method, _thd.select_proc, GetTileBelowCursor()); - if (_left_button_down) return ES_HANDLED; + /* while dragging execute the drag procedure of the corresponding window (mostly VpSelectTilesWithMethod() ) */ + if (_left_button_down) { + w->OnPlaceDrag(_thd.select_method, _thd.select_proc, GetTileBelowCursor()); + return ES_HANDLED; + } /* mouse button released.. * keep the selected tool, but reset it to the original mode. */ @@ -3472,18 +3126,14 @@ EventState VpHandlePlaceSizingDrag() } else if (_thd.select_method & VPM_SIGNALDIRS) { _thd.place_mode = HT_RECT | others; } else if (_thd.select_method & VPM_RAILDIRS) { - _thd.place_mode = (_thd.select_method & ~VPM_RAILDIRS ? _thd.next_drawstyle : HT_RAIL) | others; + _thd.place_mode = (_thd.select_method & ~VPM_RAILDIRS) ? _thd.next_drawstyle : (HT_RAIL | others); } else { _thd.place_mode = HT_POINT | others; } SetTileSelectSize(1, 1); - if (_thd.place_mode & HT_POLY) { - if (GetRailSnapMode() == RSM_SNAP_TO_TILE) SetRailSnapMode(RSM_NO_SNAP); - if (_thd.drawstyle == HT_NONE) return ES_HANDLED; - } - w->OnPlaceMouseUp(_thd.select_method, _thd.select_proc, _thd.selend, TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y)); + return ES_HANDLED; } @@ -3530,10 +3180,6 @@ void SetObjectToPlace(CursorID icon, PaletteID pal, HighLightStyle mode, WindowC VpStartPreSizing(); } - if (mode & HT_POLY) { - SetRailSnapMode((mode & HT_NEW_POLY) == HT_NEW_POLY ? RSM_NO_SNAP : RSM_SNAP_TO_RAIL); - } - if ((icon & ANIMCURSOR_FLAG) != 0) { SetAnimatedMouseCursor(_animcursors[icon & ~ANIMCURSOR_FLAG]); } else { @@ -3584,116 +3230,3 @@ void InitializeSpriteSorter() } assert(_vp_sprite_sorter != NULL); } - -static LineSnapPoint LineSnapPointAtRailTrackEndpoint(TileIndex tile, DiagDirection exit_dir, bool bidirectional) -{ - LineSnapPoint ret; - ret.x = (TILE_SIZE / 2) * (uint)(2 * TileX(tile) + TileIndexDiffCByDiagDir(exit_dir).x + 1); - ret.y = (TILE_SIZE / 2) * (uint)(2 * TileY(tile) + TileIndexDiffCByDiagDir(exit_dir).y + 1); - - ret.dirs = 0; - SetBit(ret.dirs, DiagDirToDir(exit_dir)); - SetBit(ret.dirs, ChangeDir(DiagDirToDir(exit_dir), DIRDIFF_45LEFT)); - SetBit(ret.dirs, ChangeDir(DiagDirToDir(exit_dir), DIRDIFF_45RIGHT)); - if (bidirectional) ret.dirs |= ROR(ret.dirs, DIRDIFF_REVERSE); - - return ret; -} - -/** - * Store the position of lastly built rail track; for highlighting purposes. - * - * In "polyline" highlighting mode, the stored end point will be used as a snapping point for new - * tracks allowing to place multi-segment polylines. - * - * @param start_tile tile where the track starts - * @param end_tile tile where the track ends - * @param start_track track piece on the start_tile - * @param bidirectional_exit whether to allow to highlight next track in any direction; otherwise new track will have to fallow the stored one (usefull when placing tunnels and bridges) - */ -void StoreRailPlacementEndpoints(TileIndex start_tile, TileIndex end_tile, Track start_track, bool bidirectional_exit) -{ - if (start_tile != INVALID_TILE && end_tile != INVALID_TILE) { - /* calculate trackdirs at booth ends of the track */ - Trackdir exit_trackdir_at_start = TrackToTrackdir(start_track); - Trackdir exit_trackdir_at_end = ReverseTrackdir(TrackToTrackdir(start_track)); - if (start_tile != end_tile) { // multi-tile case - /* determine proper direction (pointing outside of the track) */ - uint distance = DistanceManhattan(start_tile, end_tile); - if (distance > DistanceManhattan(TileAddByDiagDir(start_tile, TrackdirToExitdir(exit_trackdir_at_start)), end_tile)) { - Swap(exit_trackdir_at_start, exit_trackdir_at_end); - } - /* determine proper track on the end tile - switch between upper/lower or left/right based on the length */ - if (distance % 2 != 0) exit_trackdir_at_end = NextTrackdir(exit_trackdir_at_end); - } - - LineSnapPoint snap_start = LineSnapPointAtRailTrackEndpoint(start_tile, TrackdirToExitdir(exit_trackdir_at_start), bidirectional_exit); - LineSnapPoint snap_end = LineSnapPointAtRailTrackEndpoint(end_tile, TrackdirToExitdir(exit_trackdir_at_end), bidirectional_exit); - /* Find if we already had these coordinates before. */ - LineSnapPoint *snap; - bool had_start = false; - bool had_end = false; - for (snap = _rail_snap_points.Begin(); snap != _rail_snap_points.End(); snap++) { - had_start |= (snap->x == snap_start.x && snap->y == snap_start.y); - had_end |= (snap->x == snap_end.x && snap->y == snap_end.y); - } - /* Create new snap point set. */ - if (had_start && had_end) { - /* just stop snaping, don't forget snap points */ - SetRailSnapMode(RSM_NO_SNAP); - } else { - /* include only new points */ - _rail_snap_points.Clear(); - if (!had_start) *_rail_snap_points.Append() = snap_start; - if (!had_end) *_rail_snap_points.Append() = snap_end; - SetRailSnapMode(RSM_SNAP_TO_RAIL); - } - } -} - -bool CurrentlySnappingRailPlacement() -{ - return (_thd.place_mode & HT_POLY) && GetRailSnapMode() == RSM_SNAP_TO_RAIL; -} - -static RailSnapMode GetRailSnapMode() -{ - if (_rail_snap_mode == RSM_SNAP_TO_TILE && _tile_snap_points.Length() == 0) return RSM_NO_SNAP; - if (_rail_snap_mode == RSM_SNAP_TO_RAIL && _rail_snap_points.Length() == 0) return RSM_NO_SNAP; - return _rail_snap_mode; -} - -static void SetRailSnapMode(RailSnapMode mode) -{ - _rail_snap_mode = mode; - - if ((_thd.place_mode & HT_POLY) && (GetRailSnapMode() == RSM_NO_SNAP)) { - SetTileSelectSize(1, 1); - } -} - -static TileIndex GetRailSnapTile() -{ - if (_tile_snap_points.Length() == 0) return INVALID_TILE; - return TileVirtXY(_tile_snap_points[DIAGDIR_NE].x, _tile_snap_points[DIAGDIR_NE].y); -} - -static void SetRailSnapTile(TileIndex tile) -{ - _tile_snap_points.Clear(); - if (tile == INVALID_TILE) return; - - for (DiagDirection dir = DIAGDIR_BEGIN; dir < DIAGDIR_END; dir++) { - LineSnapPoint *point = _tile_snap_points.Append(); - *point = LineSnapPointAtRailTrackEndpoint(tile, dir, false); - point->dirs = ROR(point->dirs, DIRDIFF_REVERSE); - } -} - -void ResetRailPlacementSnapping() -{ - _rail_snap_mode = RSM_NO_SNAP; - _tile_snap_points.Clear(); - _rail_snap_points.Clear(); - _current_snap_lock.x = -1; -} diff --git a/src/viewport_func.h b/src/viewport_func.h index adf37d2b8e..071bf9e821 100644 --- a/src/viewport_func.h +++ b/src/viewport_func.h @@ -59,7 +59,7 @@ void ViewportAddString(const DrawPixelInfo *dpi, ZoomLevel small_from, const Vie void StartSpriteCombine(); void EndSpriteCombine(); -bool HandleViewportClicked(const ViewPort *vp, int x, int y, bool double_click); +bool HandleViewportClicked(const ViewPort *vp, int x, int y); void SetRedErrorSquare(TileIndex tile); void SetTileSelectSize(int w, int h); void SetTileSelectBigSize(int ox, int oy, int sx, int sy); diff --git a/src/widgets/newgrf_debug_widget.h b/src/widgets/newgrf_debug_widget.h index 1c63623eb0..c241ee2cb0 100644 --- a/src/widgets/newgrf_debug_widget.h +++ b/src/widgets/newgrf_debug_widget.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_debug_widget.h 25946 2013-11-07 18:17:21Z frosch $ */ +/* $Id: newgrf_debug_widget.h 27174 2015-03-01 08:17:14Z alberth $ */ /* * This file is part of OpenTTD. @@ -25,19 +25,21 @@ enum NewGRFInspectWidgets { /** Widgets of the #SpriteAlignerWindow class. */ enum SpriteAlignerWidgets { - WID_SA_CAPTION, ///< Caption of the window. - WID_SA_PREVIOUS, ///< Skip to the previous sprite. - WID_SA_GOTO, ///< Go to a given sprite. - WID_SA_NEXT, ///< Skip to the next sprite. - WID_SA_UP, ///< Move the sprite up. - WID_SA_LEFT, ///< Move the sprite to the left. - WID_SA_RIGHT, ///< Move the sprite to the right. - WID_SA_DOWN, ///< Move the sprite down. - WID_SA_SPRITE, ///< The actual sprite. - WID_SA_OFFSETS, ///< The sprite offsets. - WID_SA_PICKER, ///< Sprite picker. - WID_SA_LIST, ///< Queried sprite list. - WID_SA_SCROLLBAR, ///< Scrollbar for sprite list. + WID_SA_CAPTION, ///< Caption of the window. + WID_SA_PREVIOUS, ///< Skip to the previous sprite. + WID_SA_GOTO, ///< Go to a given sprite. + WID_SA_NEXT, ///< Skip to the next sprite. + WID_SA_UP, ///< Move the sprite up. + WID_SA_LEFT, ///< Move the sprite to the left. + WID_SA_RIGHT, ///< Move the sprite to the right. + WID_SA_DOWN, ///< Move the sprite down. + WID_SA_SPRITE, ///< The actual sprite. + WID_SA_OFFSETS_ABS, ///< The sprite offsets (absolute). + WID_SA_OFFSETS_REL, ///< The sprite offsets (relative). + WID_SA_PICKER, ///< Sprite picker. + WID_SA_LIST, ///< Queried sprite list. + WID_SA_SCROLLBAR, ///< Scrollbar for sprite list. + WID_SA_RESET_REL, ///< Reset relative sprite offset }; #endif /* WIDGETS_NEWGRF_DEBUG_WIDGET_H */ diff --git a/src/widgets/rail_widget.h b/src/widgets/rail_widget.h index 48940fea6d..b2a42e8a27 100644 --- a/src/widgets/rail_widget.h +++ b/src/widgets/rail_widget.h @@ -21,7 +21,6 @@ enum RailToolbarWidgets { WID_RAT_BUILD_EW, ///< Build rail along the game view X axis. WID_RAT_BUILD_Y, ///< Build rail along the game grid Y axis. WID_RAT_AUTORAIL, ///< Autorail tool. - WID_RAT_POLYRAIL, ///< Polyline rail tool. WID_RAT_DEMOLISH, ///< Destroy something with dynamite! WID_RAT_BUILD_DEPOT, ///< Build a depot. WID_RAT_BUILD_WAYPOINT, ///< Build a waypoint. diff --git a/src/window.cpp b/src/window.cpp index 634c7d13be..160b1a4497 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1,4 +1,4 @@ -/* $Id: window.cpp 27147 2015-02-13 21:25:48Z frosch $ */ +/* $Id: window.cpp 27185 2015-03-13 20:54:35Z rubidium $ */ /* * This file is part of OpenTTD. @@ -1079,7 +1079,16 @@ Window::~Window() free(this->nested_array); // Contents is released through deletion of #nested_root. delete this->nested_root; - this->window_class = WC_INVALID; + /* + * Make fairly sure that this is written, and not "optimized" away. + * The delete operator is overwritten to not delete it; the deletion + * happens at a later moment in time after the window has been + * removed from the list of windows to prevent issues with items + * being removed during the iteration as not one but more windows + * may be removed by a single call to ~Window by means of the + * DeleteChildWindows function. + */ + const_cast(this->window_class) = WC_INVALID; } /** @@ -2816,7 +2825,7 @@ static void MouseLoop(MouseClick click, int mousewheel) case MC_DOUBLE_LEFT: case MC_LEFT: DEBUG(misc, 2, "Cursor: 0x%X (%d)", _cursor.sprite, _cursor.sprite); - if (!HandleViewportClicked(vp, x, y, click == MC_DOUBLE_LEFT) && + if (!HandleViewportClicked(vp, x, y) && !(w->flags & WF_DISABLE_VP_SCROLL) && _settings_client.gui.left_mouse_btn_scrolling) { _scrolling_viewport = true; From 990dac5149beed844ba9d095dd9f57ac6e7d8ce8 Mon Sep 17 00:00:00 2001 From: Pavel Stupnikov Date: Thu, 19 Mar 2015 16:55:44 +0300 Subject: [PATCH 3/4] openttd 1.5.9-RC1 with missing files --HG-- branch : openttd --- media/extra_grf/assemble_nfo.awk | 32 + media/extra_grf/palette.nfo | 20 + projects/Debug/custombuild.command.1.tlog | Bin 0 -> 204 bytes projects/Debug/custombuild.read.1.tlog | 1 + projects/Debug/custombuild.write.1.tlog | 1 + projects/Debug/generate.lastbuildstate | 2 + projects/Debug/generate.unsuccessfulbuild | 0 projects/Debug/generate_vs100.log | 18 + projects/openttd_vs100.v11.suo | Bin 0 -> 30208 bytes projects/openttd_vs100.vcxproj.my | 1317 +++++ projects/openttd_vs100.vcxproj.user | 4 + projects/openttd_vs90.vcproj.rej | 48 + projects/settings_vs100.vcxproj.user | 4 + projects/strgen_vs100.vcxproj.user | 4 + src/3rdparty/os2/getaddrinfo.c | 299 ++ src/3rdparty/os2/getaddrinfo.h | 101 + src/3rdparty/os2/getnameinfo.c | 367 ++ src/3rdparty/os2/getnameinfo.h | 29 + src/disaster_vehicle.cpp | 982 ++++ src/disaster_vehicle.h | 62 + src/lang/latin.txt | 5288 +++++++++++++++++++++ src/rev.cpp | 6 +- src/safeguards.h | 74 + src/table/heightmap_colours.h | 344 ++ 24 files changed, 9000 insertions(+), 3 deletions(-) create mode 100644 media/extra_grf/assemble_nfo.awk create mode 100644 media/extra_grf/palette.nfo create mode 100644 projects/Debug/custombuild.command.1.tlog create mode 100644 projects/Debug/custombuild.read.1.tlog create mode 100644 projects/Debug/custombuild.write.1.tlog create mode 100644 projects/Debug/generate.lastbuildstate create mode 100644 projects/Debug/generate.unsuccessfulbuild create mode 100644 projects/Debug/generate_vs100.log create mode 100644 projects/openttd_vs100.v11.suo create mode 100644 projects/openttd_vs100.vcxproj.my create mode 100644 projects/openttd_vs100.vcxproj.user create mode 100644 projects/openttd_vs90.vcproj.rej create mode 100644 projects/settings_vs100.vcxproj.user create mode 100644 projects/strgen_vs100.vcxproj.user create mode 100644 src/3rdparty/os2/getaddrinfo.c create mode 100644 src/3rdparty/os2/getaddrinfo.h create mode 100644 src/3rdparty/os2/getnameinfo.c create mode 100644 src/3rdparty/os2/getnameinfo.h create mode 100644 src/disaster_vehicle.cpp create mode 100644 src/disaster_vehicle.h create mode 100644 src/lang/latin.txt create mode 100644 src/safeguards.h create mode 100644 src/table/heightmap_colours.h diff --git a/media/extra_grf/assemble_nfo.awk b/media/extra_grf/assemble_nfo.awk new file mode 100644 index 0000000000..fdef6b23cf --- /dev/null +++ b/media/extra_grf/assemble_nfo.awk @@ -0,0 +1,32 @@ +# $Id: assemble_nfo.awk 26708 2014-07-30 17:21:42Z rubidium $ + +# This file is part of OpenTTD. +# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + +BEGIN { + # Very basic variant function; barely any error checking. + # Just use the first argument as the file to start from when assembling everything + path = ARGV[1]; + gsub("[^/\\\\]*$", "", path); + assemble(ARGV[1]); +} + +# Recursive function for assembling by means of resolving the #includes. +function assemble(filename) { + while ((getline < filename) > 0) { + if (NF == 2 && $1 == "#include" ) { + # Remove the quotes. + gsub("[\"'<>]", "", $2); + assemble(path $2); + } else { + print $0; + } + } + + if (close(filename) < 0) { + print "Could not open " filename > "/dev/stderr"; + exit -1; + } +} diff --git a/media/extra_grf/palette.nfo b/media/extra_grf/palette.nfo new file mode 100644 index 0000000000..a1a6cf1dcc --- /dev/null +++ b/media/extra_grf/palette.nfo @@ -0,0 +1,20 @@ +// +// $Id: palette.nfo 26869 2014-09-21 07:57:45Z rubidium $ +// +// This file is part of OpenTTD. +// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . +// + + -1 * 0 0C "All black palette" + -1 * 0 05 18 01 + -1 * 0 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 + 01 diff --git a/projects/Debug/custombuild.command.1.tlog b/projects/Debug/custombuild.command.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..e27cbe252bbc4ed03e0a70b0a5f5c4ef24f8872b GIT binary patch literal 204 zcmezWFODIGA%-E0!HL12A%Y>8A&eo2A%-De1A($bC!H>b8A&kM1 zA%r1>!G$4)A(+9RA(SDA!I{C8L65sB@D$3F${SO`3z+Yi3}wSB@8JHF$@I^=ql0~QW^3XQW=WCs!|#B P7|Ixu7>XH`!1e+F*}No+ literal 0 HcmV?d00001 diff --git a/projects/Debug/custombuild.read.1.tlog b/projects/Debug/custombuild.read.1.tlog new file mode 100644 index 0000000000..46b134b197 --- /dev/null +++ b/projects/Debug/custombuild.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/projects/Debug/custombuild.write.1.tlog b/projects/Debug/custombuild.write.1.tlog new file mode 100644 index 0000000000..46b134b197 --- /dev/null +++ b/projects/Debug/custombuild.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/projects/Debug/generate.lastbuildstate b/projects/Debug/generate.lastbuildstate new file mode 100644 index 0000000000..ef5a816eef --- /dev/null +++ b/projects/Debug/generate.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v110:false +Debug|Win32|\\VBOXSVR\Projects\novattd\projects\| diff --git a/projects/Debug/generate.unsuccessfulbuild b/projects/Debug/generate.unsuccessfulbuild new file mode 100644 index 0000000000..e69de29bb2 diff --git a/projects/Debug/generate_vs100.log b/projects/Debug/generate_vs100.log new file mode 100644 index 0000000000..8c730a1a0c --- /dev/null +++ b/projects/Debug/generate_vs100.log @@ -0,0 +1,18 @@ +Build started 18.04.2014 19:09:33. + 1>Project "\\VBOXSVR\Projects\novattd\projects\generate_vs100.vcxproj" on node 2 (Build target(s)). + 1>CustomBuild: + "\\VBOXSVR\Projects\novattd\projects" + Указанный путь был иÑпользован при запуÑке CMD.EXE в качеÑтве текущей папки. + CMD.EXE не поддерживает пути UNC. По умолчанию выбрана ÑиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° Windows. + Running 'generate.vbs' ... + Сервер Ñценариев Windows (Microsoft R) верÑÐ¸Ñ 5.8 + c ÐšÐ¾Ñ€Ð¿Ð¾Ñ€Ð°Ñ†Ð¸Ñ ÐœÐ°Ð¹ÐºÑ€Ð¾Ñофт (Microsoft Corp.), 1996-2001. Ð’Ñе права защищены. + + Can't find source.list, needed in order to make this run. + Please go to either the project dir, or the root dir of a clean SVN checkout. + 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(172,5): error MSB6006: "cmd.exe" exited with code 1. + 1>Done Building Project "\\VBOXSVR\Projects\novattd\projects\generate_vs100.vcxproj" (Build target(s)) -- FAILED. + +Build FAILED. + +Time Elapsed 00:00:00.40 diff --git a/projects/openttd_vs100.v11.suo b/projects/openttd_vs100.v11.suo new file mode 100644 index 0000000000000000000000000000000000000000..f71d75043a5e4596f62c8b438ecd67c473bd38d3 GIT binary patch literal 30208 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 + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + openttd + {668328A0-B40E-4CDB-BD72-D0064424414A} + openttd + + + + Application + false + Unicode + v110 + + + Application + false + Unicode + true + v110_xp + + + Application + false + Unicode + v110 + + + Application + false + Unicode + true + v110 + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)..\objs\$(Platform)\$(Configuration)\ + $(SolutionDir)..\objs\$(Platform)\$(Configuration)\ + false + $(SolutionDir)..\objs\$(Platform)\$(Configuration)\ + $(SolutionDir)..\objs\$(Platform)\$(Configuration)\ + + $(SolutionDir)..\objs\$(Platform)\$(Configuration)\ + false + $(SolutionDir)..\objs\$(Platform)\$(Configuration)\ + $(SolutionDir)..\objs\$(Platform)\$(Configuration)\ + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(SolutionDir)..\objs\$(Platform)\$(Configuration)\ + $(ProjectDir)..\bin + + + C:\Users\user\Downloads\OpenTTD essentials\shared\include;$(IncludePath) + C:\Users\user\Downloads\OpenTTD essentials\win64\library;$(LibraryPath) + + + C:\Users\user\Downloads\OpenTTD essentials\shared\include;$(IncludePath) + C:\Users\user\Downloads\OpenTTD essentials\win32\library;$(LibraryPath) + + + + .\Release/openttd.tlb + + + + + /MP /J %(AdditionalOptions) + Full + AnySuitable + true + Size + true + ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_XKEYCHECK_H;%(PreprocessorDefinitions) + true + Sync + MultiThreaded + 4Bytes + false + true + + + + + + + All + $(IntDir) + $(IntDir) + $(IntDir)$(TargetName).pdb + Level3 + false + true + ProgramDatabase + FastCall + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0809 + + + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) + true + %(IgnoreSpecificDefaultLibraries) + true + Windows + 1048576 + 1048576 + true + false + + + MachineX86 + true + false + + + + + .\Debug/openttd.tlb + + + + + /MP %(AdditionalOptions) + Disabled + ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + $(IntDir) + $(IntDir) + $(IntDir)$(TargetName).pdb + Level3 + false + true + EditAndContinue + FastCall + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0809 + + + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) + true + LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + 1048576 + 1048576 + false + + + MachineX86 + + + + + X64 + .\Release/openttd.tlb + + + + + /MP /J %(AdditionalOptions) + Full + AnySuitable + true + Size + true + ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;_XKEYCHECK_H;%(PreprocessorDefinitions) + true + Sync + MultiThreaded + Default + false + true + + + + + + + All + $(IntDir) + $(IntDir) + $(IntDir)$(TargetName).pdb + Level3 + false + true + ProgramDatabase + FastCall + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0809 + + + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) + true + %(IgnoreSpecificDefaultLibraries) + true + Windows + 1048576 + 1048576 + true + MachineX64 + true + + + + + X64 + .\Debug/openttd.tlb + + + + + /MP %(AdditionalOptions) + Disabled + ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + + + + + $(IntDir) + $(IntDir) + $(IntDir)$(TargetName).pdb + Level3 + false + true + ProgramDatabase + Cdecl + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0809 + + + winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies) + true + LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + 1048576 + 1048576 + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {0f066b23-18df-4284-8265-f4a5e7e3b966} + false + + + {a133a442-bd0a-4ade-b117-ad7545e4bdd1} + false + + + {1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec} + false + + + + \ No newline at end of file diff --git a/projects/openttd_vs100.vcxproj.user b/projects/openttd_vs100.vcxproj.user new file mode 100644 index 0000000000..7cbb3216ad --- /dev/null +++ b/projects/openttd_vs100.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/projects/openttd_vs90.vcproj.rej b/projects/openttd_vs90.vcproj.rej new file mode 100644 index 0000000000..459dad5d39 --- /dev/null +++ b/projects/openttd_vs90.vcproj.rej @@ -0,0 +1,48 @@ +--- projects/openttd_vs90.vcproj (revision 26379) ++++ projects/openttd_vs90.vcproj (working copy) +@@ -255,38 +268,26 @@ + /> + + diff --git a/projects/settings_vs100.vcxproj.user b/projects/settings_vs100.vcxproj.user new file mode 100644 index 0000000000..7cbb3216ad --- /dev/null +++ b/projects/settings_vs100.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/projects/strgen_vs100.vcxproj.user b/projects/strgen_vs100.vcxproj.user new file mode 100644 index 0000000000..7cbb3216ad --- /dev/null +++ b/projects/strgen_vs100.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/3rdparty/os2/getaddrinfo.c b/src/3rdparty/os2/getaddrinfo.c new file mode 100644 index 0000000000..3cdda21f1b --- /dev/null +++ b/src/3rdparty/os2/getaddrinfo.c @@ -0,0 +1,299 @@ +/* + * This file is part of libESMTP, a library for submission of RFC 2822 + * formatted electronic mail messages using the SMTP protocol described + * in RFC 2821. + * + * Copyright (C) 2001,2002 Brian Stafford + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* An emulation of the RFC 2553 / Posix getaddrinfo resolver interface. + */ + +#if !HAVE_GETADDRINFO + +/* Need to turn off Posix features in glibc to build this */ +#undef _POSIX_C_SOURCE +#undef _XOPEN_SOURCE + +#include "getaddrinfo.h" +//#include "compat/inet_pton.h" + +#include +#include +#include +#include +#include +#include +#include + +static struct addrinfo * +dup_addrinfo (struct addrinfo *info, void *addr, size_t addrlen) { + struct addrinfo *ret; + + ret = malloc (sizeof (struct addrinfo)); + if (ret == NULL) + return NULL; + memcpy (ret, info, sizeof (struct addrinfo)); + ret->ai_addr = malloc (addrlen); + if (ret->ai_addr == NULL) { + free (ret); + return NULL; + } + memcpy (ret->ai_addr, addr, addrlen); + ret->ai_addrlen = addrlen; + return ret; +} + +int +getaddrinfo (const char *nodename, const char *servname, + const struct addrinfo *hints, struct addrinfo **res) +{ + struct hostent *hp; + struct servent *servent; + const char *socktype; + int port; + struct addrinfo hint, result; + struct addrinfo *ai, *sai, *eai; + char **addrs; + + if (servname == NULL && nodename == NULL) + return EAI_NONAME; + + memset (&result, 0, sizeof result); + + /* default for hints */ + if (hints == NULL) { + memset (&hint, 0, sizeof hint); + hint.ai_family = PF_UNSPEC; + hints = &hint; + } + + if (servname == NULL) + port = 0; + else { + /* check for tcp or udp sockets only */ + if (hints->ai_socktype == SOCK_STREAM) + socktype = "tcp"; + else if (hints->ai_socktype == SOCK_DGRAM) + socktype = "udp"; + else + return EAI_SERVICE; + result.ai_socktype = hints->ai_socktype; + + /* Note: maintain port in host byte order to make debugging easier */ + if (isdigit (*servname)) + port = strtol (servname, NULL, 10); + else if ((servent = getservbyname (servname, socktype)) != NULL) + port = ntohs (servent->s_port); + else + return EAI_NONAME; + } + + /* if nodename == NULL refer to the local host for a client or any + for a server */ + if (nodename == NULL) { + struct sockaddr_in sin; + + /* check protocol family is PF_UNSPEC or PF_INET - could try harder + for IPv6 but that's more code than I'm prepared to write */ + if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET) + result.ai_family = AF_INET; + else + return EAI_FAMILY; + + sin.sin_family = result.ai_family; + sin.sin_port = htons (port); + if (hints->ai_flags & AI_PASSIVE) + sin.sin_addr.s_addr = htonl (INADDR_ANY); + else + sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK); + /* Duplicate result and addr and return */ + *res = dup_addrinfo (&result, &sin, sizeof sin); + return (*res == NULL) ? EAI_MEMORY : 0; + } + + /* If AI_NUMERIC is specified, use inet_pton to translate numbers and + dots notation. */ + if (hints->ai_flags & AI_NUMERICHOST) { + struct sockaddr_in sin; + + /* check protocol family is PF_UNSPEC or PF_INET */ + if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET) + result.ai_family = AF_INET; + else + return EAI_FAMILY; + + sin.sin_family = result.ai_family; + sin.sin_port = htons (port); + if (inet_pton(result.ai_family, nodename, &sin.sin_addr)==0) + return EAI_NONAME; + sin.sin_addr.s_addr = inet_addr (nodename); + /* Duplicate result and addr and return */ + *res = dup_addrinfo (&result, &sin, sizeof sin); + return (*res == NULL) ? EAI_MEMORY : 0; + } + +#if HAVE_H_ERRNO + h_errno = 0; +#endif + errno = 0; + hp = gethostbyname(nodename); + if (hp == NULL) { +#ifdef EAI_SYSTEM + if (errno != 0) { + return EAI_SYSTEM; + } +#endif + switch (h_errno) { + case HOST_NOT_FOUND: + return EAI_NODATA; + case NO_DATA: + return EAI_NODATA; +#if defined(NO_ADDRESS) && NO_ADDRESS != NO_DATA + case NO_ADDRESS: + return EAI_NODATA; +#endif + case NO_RECOVERY: + return EAI_FAIL; + case TRY_AGAIN: + return EAI_AGAIN; + default: + return EAI_FAIL; + } + return EAI_FAIL; + } + + /* Check that the address family is acceptable. + */ + switch (hp->h_addrtype) { + case AF_INET: + if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)) + return EAI_FAMILY; + break; +#ifndef __OS2__ + case AF_INET6: + if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET6)) + return EAI_FAMILY; + break; +#endif + default: + return EAI_FAMILY; + } + + /* For each element pointed to by hp, create an element in the + result linked list. */ + sai = eai = NULL; + for (addrs = hp->h_addr_list; *addrs != NULL; addrs++) { + struct sockaddr sa; + size_t addrlen; + + if (hp->h_length < 1) + continue; + sa.sa_family = hp->h_addrtype; + switch (hp->h_addrtype) { + case AF_INET: + ((struct sockaddr_in *) &sa)->sin_port = htons (port); + memcpy (&((struct sockaddr_in *) &sa)->sin_addr, + *addrs, hp->h_length); + addrlen = sizeof (struct sockaddr_in); + break; +#ifndef __OS2__ + case AF_INET6: +#if SIN6_LEN + ((struct sockaddr_in6 *) &sa)->sin6_len = hp->h_length; +#endif + ((struct sockaddr_in6 *) &sa)->sin6_port = htons (port); + memcpy (&((struct sockaddr_in6 *) &sa)->sin6_addr, + *addrs, hp->h_length); + addrlen = sizeof (struct sockaddr_in6); + break; +#endif + default: + continue; + } + + result.ai_family = hp->h_addrtype; + ai = dup_addrinfo (&result, &sa, addrlen); + if (ai == NULL) { + freeaddrinfo (sai); + return EAI_MEMORY; + } + if (sai == NULL) + sai = ai; + else + eai->ai_next = ai; + eai = ai; + } + + if (sai == NULL) { + return EAI_NODATA; + } + + if (hints->ai_flags & AI_CANONNAME) { + sai->ai_canonname = malloc (strlen (hp->h_name) + 1); + if (sai->ai_canonname == NULL) { + freeaddrinfo (sai); + return EAI_MEMORY; + } + strcpy (sai->ai_canonname, hp->h_name); + } + + *res = sai; + return 0; +} + +void +freeaddrinfo (struct addrinfo *ai) +{ + struct addrinfo *next; + + while (ai != NULL) { + next = ai->ai_next; + if (ai->ai_canonname != NULL) + free (ai->ai_canonname); + if (ai->ai_addr != NULL) + free (ai->ai_addr); + free (ai); + ai = next; + } +} + +const char * +gai_strerror (int ecode) +{ + static const char *eai_descr[] = { + "no error", + "address family for nodename not supported", /* EAI_ADDRFAMILY */ + "temporary failure in name resolution", /* EAI_AGAIN */ + "invalid value for ai_flags", /* EAI_BADFLAGS */ + "non-recoverable failure in name resolution", /* EAI_FAIL */ + "ai_family not supported", /* EAI_FAMILY */ + "memory allocation failure", /* EAI_MEMORY */ + "no address associated with nodename", /* EAI_NODATA */ + "nodename nor servname provided, or not known", /* EAI_NONAME */ + "servname not supported for ai_socktype", /* EAI_SERVICE */ + "ai_socktype not supported", /* EAI_SOCKTYPE */ + "system error returned in errno", /* EAI_SYSTEM */ + "argument buffer overflow", /* EAI_OVERFLOW */ + }; + + if (ecode < 0 || ecode > (int) (sizeof eai_descr/ sizeof eai_descr[0])) + return "unknown error"; + return eai_descr[ecode]; +} + +#endif /* HAVE_GETADDRINFO */ diff --git a/src/3rdparty/os2/getaddrinfo.h b/src/3rdparty/os2/getaddrinfo.h new file mode 100644 index 0000000000..0a588a40a2 --- /dev/null +++ b/src/3rdparty/os2/getaddrinfo.h @@ -0,0 +1,101 @@ +#ifndef _getaddrinfo_h +#define _getaddrinfo_h + +/* + * Shamelessly duplicated from the fetchmail public sources + * for use by the Squid Project under GNU Public License. + * + * Update/Maintenance History: + * + * 15-Aug-2007 : Copied from fetchmail 6.3.8 + * - added protection around libray headers + * + * 16-Aug-2007 : Altered configure checks + * Un-hacked slightly to use system gethostbyname() + * + * Original License and code follows. + */ + +/* + * This file is part of libESMTP, a library for submission of RFC 2822 + * formatted electronic mail messages using the SMTP protocol described + * in RFC 2821. + * + * Copyright (C) 2001,2002 Brian Stafford + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Structure and prototypes taken from RFC 2553 */ + +/* SG 23/09/2007: +On Windows the following definitions are already available, may be that +this could be needed on some other platform */ +typedef int socklen_t; + +struct addrinfo { + int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ + int ai_family; /* PF_xxx */ + int ai_socktype; /* SOCK_xxx */ + int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ + socklen_t ai_addrlen; /* length of ai_addr */ + char *ai_canonname; /* canonical name for nodename */ + struct sockaddr *ai_addr; /* binary address */ + struct addrinfo *ai_next; /* next structure in linked list */ +}; + +/* Supposed to be defined in */ +#define AI_ADDRCONFIG 0 +#define AI_PASSIVE 1 /* Socket address is intended for `bind'. */ +#define AI_CANONNAME 2 /* Request for canonical name. */ +#define AI_NUMERICHOST 4 /* Don't use name resolution. */ + +/* Supposed to be defined in */ +#define EAI_ADDRFAMILY 1 /* address family for nodename not supported */ +#define EAI_AGAIN 2 /* temporary failure in name resolution */ +#define EAI_BADFLAGS 3 /* invalid value for ai_flags */ +#define EAI_FAIL 4 /* non-recoverable failure in name resolution */ +#define EAI_FAMILY 5 /* ai_family not supported */ +#define EAI_MEMORY 6 /* memory allocation failure */ +#define EAI_NODATA 7 /* no address associated with nodename */ +#define EAI_NONAME 8 /* nodename nor servname provided, or not known */ +#define EAI_SERVICE 9 /* servname not supported for ai_socktype */ +#define EAI_SOCKTYPE 10 /* ai_socktype not supported */ + +#ifndef EAI_SYSTEM +/* Not defined on mingw32. */ +#define EAI_SYSTEM 11 /* System error returned in `errno'. */ +#endif +#ifndef EAI_OVERFLOW +/* Not defined on mingw32. */ +#define EAI_OVERFLOW 12 /* Argument buffer overflow. */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif +/* RFC 2553 / Posix resolver */ +int getaddrinfo (const char *nodename, const char *servname, + const struct addrinfo *hints, struct addrinfo **res); +/* Free addrinfo structure and associated storage */ +void freeaddrinfo (struct addrinfo *ai); + +/* Convert error return from getaddrinfo() to string */ +const char *gai_strerror (int code); +#ifdef __cplusplus +} +#endif + +#endif /* _getaddrinfo_h */ diff --git a/src/3rdparty/os2/getnameinfo.c b/src/3rdparty/os2/getnameinfo.c new file mode 100644 index 0000000000..14fd89ef15 --- /dev/null +++ b/src/3rdparty/os2/getnameinfo.c @@ -0,0 +1,367 @@ +/* + * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Issues to be discussed: + * - RFC2553 says that we should raise error on short buffer. X/Open says + * we need to truncate the result. We obey RFC2553 (and X/Open should be + * modified). ipngwg rough consensus seems to follow RFC2553. RFC3493 says + * nothing about it, but defines a new error code EAI_OVERFLOW which seems + * to be intended the code for this case. + * - What is "local" in NI_NOFQDN? (see comments in the code) + * - NI_NAMEREQD and NI_NUMERICHOST conflict with each other. + * - (KAME extension) always attach textual scopeid (fe80::1%lo0), if + * sin6_scope_id is filled - standardization status? + * - what should we do if we should do getservbyport("sctp")? + */ + +/* + * Considerations about thread-safeness + * The code in this file is thread-safe, and so the thread-safeness of + * getnameinfo() depends on the property of backend functions. + * - getservbyport() is not thread safe for most systems we are targeting. + * - getipnodebyaddr() is thread safe. However, many resolver libraries + * used in the function are not thread safe. + * - gethostbyaddr() is usually not thread safe. + */ + +#if !HAVE_GETNAMEINFO + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "getaddrinfo.h" +#include "getnameinfo.h" + +static const struct afd { + int a_af; + int a_addrlen; + int a_socklen; + int a_off; + int a_portoff; +} afdl [] = { +#if INET6 + {PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6), + offsetof(struct sockaddr_in6, sin6_addr), + offsetof(struct sockaddr_in6, sin6_port)}, +#endif + {PF_INET, sizeof(struct in_addr), sizeof(struct sockaddr_in), + offsetof(struct sockaddr_in, sin_addr), + offsetof(struct sockaddr_in, sin_port)}, + {0, 0, 0, 0, 0}, +}; + +#if INET6 +static int ip6_parsenumeric __P((const struct sockaddr *, const char *, char *, + size_t, int)); +static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int)); +#endif + +int +getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) +const struct sockaddr *sa; +socklen_t salen; +char *host; +size_t hostlen; +char *serv; +size_t servlen; +int flags; +{ + const struct afd *afd; + struct servent *sp; + struct hostent *hp; + unsigned short port; + int family, i; + const char *addr; + uint32_t v4a; + char numserv[512]; + + if (sa == NULL) + return EAI_FAIL; + +#if HAVE_SA_LEN /*XXX*/ + if (sa->sa_len != salen) + return EAI_FAIL; +#endif + + family = sa->sa_family; + for (i = 0; afdl[i].a_af; i++) + if (afdl[i].a_af == family) { + afd = &afdl[i]; + goto found; + } + return EAI_FAMILY; + +found: + if (salen != afd->a_socklen) + return EAI_FAIL; + + /* network byte order */ + memcpy(&port, (const char *)sa + afd->a_portoff, sizeof(port)); + addr = (const char *)sa + afd->a_off; + + if (serv == NULL || servlen == 0) { + /* + * do nothing in this case. + * in case you are wondering if "&&" is more correct than + * "||" here: RFC3493 says that serv == NULL OR servlen == 0 + * means that the caller does not want the result. + */ + } else { + if (flags & NI_NUMERICSERV) + sp = NULL; + else { + sp = getservbyport(port, + (flags & NI_DGRAM) ? "udp" : "tcp"); + } + if (sp) { + if (strlen(sp->s_name) + 1 > servlen) + return EAI_OVERFLOW; + strncpy(serv, sp->s_name, servlen); + } else { + snprintf(numserv, sizeof(numserv), "%u", ntohs(port)); + if (strlen(numserv) + 1 > servlen) + return EAI_OVERFLOW; + strncpy(serv, numserv, servlen); + } + } + + switch (sa->sa_family) { + case AF_INET: + v4a = (uint32_t) + ntohl(((const struct sockaddr_in *)sa)->sin_addr.s_addr); + if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a)) + flags |= NI_NUMERICHOST; + v4a >>= IN_CLASSA_NSHIFT; + if (v4a == 0) + flags |= NI_NUMERICHOST; + break; +#if INET6 + case AF_INET6: { + const struct sockaddr_in6 *sin6; + sin6 = (const struct sockaddr_in6 *)sa; + switch (sin6->sin6_addr.s6_addr[0]) { + case 0x00: + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) + ; + else if (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr)) + ; + else + flags |= NI_NUMERICHOST; + break; + default: + if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) + flags |= NI_NUMERICHOST; + else if (IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) + flags |= NI_NUMERICHOST; + break; + } + } + break; +#endif + } + if (host == NULL || hostlen == 0) { + /* + * do nothing in this case. + * in case you are wondering if "&&" is more correct than + * "||" here: RFC3493 says that host == NULL or hostlen == 0 + * means that the caller does not want the result. + */ + } else if (flags & NI_NUMERICHOST) { + /* NUMERICHOST and NAMEREQD conflicts with each other */ + if (flags & NI_NAMEREQD) + return EAI_NONAME; + + goto numeric; + } else { +#if USE_GETIPNODEBY + int h_error = 0; + hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error); +#else + hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af); +#if 0 // getnameinfo.c:161:9: error: variable 'h_error' set but not used +#if HAVE_H_ERRNO + h_error = h_errno; +#else + h_error = EINVAL; +#endif +#endif /* 0 */ +#endif + + if (hp) { +#if 0 + if (flags & NI_NOFQDN) { + /* + * According to RFC3493 section 6.2, NI_NOFQDN + * means "node name portion of the FQDN shall + * be returned for local hosts." The following + * code tries to implement it by returning the + * first label (the part before the first + * period) of the FQDN. However, it is not + * clear if this always makes sense, since the + * given address may be outside of "local + * hosts." Due to the unclear description, we + * disable the code in this implementation. + */ + char *p; + p = strchr(hp->h_name, '.'); + if (p) + *p = '\0'; + } +#endif + if (strlen(hp->h_name) + 1 > hostlen) { +#if USE_GETIPNODEBY + freehostent(hp); +#endif + return EAI_OVERFLOW; + } + strncpy(host, hp->h_name, hostlen); +#if USE_GETIPNODEBY + freehostent(hp); +#endif + } else { + if (flags & NI_NAMEREQD) + return EAI_NONAME; + +numeric: + switch (afd->a_af) { +#if INET6 + case AF_INET6: { + int error; + + if ((error = ip6_parsenumeric(sa, addr, host, + hostlen, + flags)) != 0) + return(error); + break; + } +#endif + default: + if (inet_ntop(afd->a_af, addr, host, + hostlen) == NULL) + return EAI_SYSTEM; + break; + } + } + } + return(0); +} + +#if INET6 +static int +ip6_parsenumeric(sa, addr, host, hostlen, flags) +const struct sockaddr *sa; +const char *addr; +char *host; +size_t hostlen; +int flags; +{ + int numaddrlen; + char numaddr[512]; + + if (inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr)) == NULL) + return EAI_SYSTEM; + + numaddrlen = strlen(numaddr); + if (numaddrlen + 1 > hostlen) /* don't forget terminator */ + return EAI_OVERFLOW; + strncpy(host, numaddr, hostlen); + + if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) { + char zonebuf[SQUIDHOSTNAMELEN]; + int zonelen; + + zonelen = ip6_sa2str( + (const struct sockaddr_in6 *)(const void *)sa, + zonebuf, sizeof(zonebuf), flags); + if (zonelen < 0) + return EAI_OVERFLOW; + if (zonelen + 1 + numaddrlen + 1 > hostlen) + return EAI_OVERFLOW; + + /* construct */ + memcpy(host + numaddrlen + 1, zonebuf, + (size_t)zonelen); + host[numaddrlen] = SCOPE_DELIMITER; + host[numaddrlen + 1 + zonelen] = '\0'; + } + + return 0; +} + +/* ARGSUSED */ +static int +ip6_sa2str(sa6, buf, bufsiz, flags) +const struct sockaddr_in6 *sa6; +char *buf; +size_t bufsiz; +int flags; +{ + unsigned int ifindex; + const struct in6_addr *a6; + int n; + + ifindex = (unsigned int)sa6->sin6_scope_id; + a6 = &sa6->sin6_addr; + +#if NI_NUMERICSCOPE + if ((flags & NI_NUMERICSCOPE) != 0) { + n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id); + if (n < 0 || n >= bufsiz) + return -1; + else + return n; + } +#endif + + /* if_indextoname() does not take buffer size. not a good api... */ + if ((IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6) || + IN6_IS_ADDR_MC_NODELOCAL(a6)) && bufsiz >= IF_NAMESIZE) { + char *p = if_indextoname(ifindex, buf); + if (p) + return (strlen(p)); + } + + /* last resort */ + n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id); + if (n < 0 || n >= bufsiz) + return -1; + else + return n; +} +#endif /* INET6 */ +#endif diff --git a/src/3rdparty/os2/getnameinfo.h b/src/3rdparty/os2/getnameinfo.h new file mode 100644 index 0000000000..c1861aa033 --- /dev/null +++ b/src/3rdparty/os2/getnameinfo.h @@ -0,0 +1,29 @@ +#ifndef _getnameinfo_h +#define _getnameinfo_h +/* + * Reconstructed from KAME getnameinfo.c (in lib/) + */ + + /* getnameinfo flags */ +#define NI_NOFQDN 0x0001 +#define NI_NUMERICHOST 0x0002 /* return numeric form of address */ +#define NI_NAMEREQD 0x0004 /* request DNS name */ +#define NI_NUMERICSERV 0x0008 +#define NI_DGRAM 0x0010 + +#ifdef __cplusplus +extern "C" { +#endif +/* RFC 2553 / Posix resolver */ +int getnameinfo(const struct sockaddr *sa, + socklen_t salen, + char *host, + size_t hostlen, + char *serv, + size_t servlen, + int flags ); +#ifdef __cplusplus +} +#endif + +#endif /* _getnameinfo_h */ diff --git a/src/disaster_vehicle.cpp b/src/disaster_vehicle.cpp new file mode 100644 index 0000000000..a691bd469f --- /dev/null +++ b/src/disaster_vehicle.cpp @@ -0,0 +1,982 @@ +/* $Id: disaster_vehicle.cpp 27087 2014-12-21 20:49:15Z rubidium $ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** + * @file disaster_vehicle.cpp + * + * All disaster/easter egg vehicles are handled here. + * The general flow of control for the disaster vehicles is as follows: + *
    + *
  1. Initialize the disaster in a disaster specific way (eg start position, + * possible target, etc.) Disaster_XXX_Init() function + *
  2. Add a subtype to a disaster, which is an index into the function array + * that handles the vehicle's ticks. + *
  3. Run the disaster vehicles each tick until their target has been reached, + * this happens in the DisasterTick_XXX() functions. In here, a vehicle's + * state is kept by v->current_order.dest variable. Each achieved sub-target + * will increase this value, and the last one will remove the disaster itself + *
+ */ + + +#include "stdafx.h" + +#include "aircraft.h" +#include "disaster_vehicle.h" +#include "industry.h" +#include "station_base.h" +#include "command_func.h" +#include "news_func.h" +#include "town.h" +#include "company_func.h" +#include "strings_func.h" +#include "date_func.h" +#include "viewport_func.h" +#include "vehicle_func.h" +#include "sound_func.h" +#include "effectvehicle_func.h" +#include "roadveh.h" +#include "ai/ai.hpp" +#include "game/game.hpp" +#include "company_base.h" +#include "core/random_func.hpp" +#include "core/backup_type.hpp" + +#include "table/strings.h" + +#include "safeguards.h" + +/** Delay counter for considering the next disaster. */ +uint16 _disaster_delay; + +static void DisasterClearSquare(TileIndex tile) +{ + if (EnsureNoVehicleOnGround(tile).Failed()) return; + + switch (GetTileType(tile)) { + case MP_RAILWAY: + if (Company::IsHumanID(GetTileOwner(tile)) && !IsRailDepot(tile)) { + Backup cur_company(_current_company, OWNER_WATER, FILE_LINE); + DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR); + cur_company.Restore(); + + /* update signals in buffer */ + UpdateSignalsInBuffer(); + } + break; + + case MP_HOUSE: { + Backup cur_company(_current_company, OWNER_NONE, FILE_LINE); + DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR); + cur_company.Restore(); + break; + } + + case MP_TREES: + case MP_CLEAR: + DoClearSquare(tile); + break; + + default: + break; + } +} + +static const SpriteID _disaster_images_1[] = {SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP, SPR_BLIMP}; +static const SpriteID _disaster_images_2[] = {SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT, SPR_UFO_SMALL_SCOUT}; +static const SpriteID _disaster_images_3[] = {SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15, SPR_F_15}; +static const SpriteID _disaster_images_4[] = {SPR_SUB_SMALL_NE, SPR_SUB_SMALL_NE, SPR_SUB_SMALL_SE, SPR_SUB_SMALL_SE, SPR_SUB_SMALL_SW, SPR_SUB_SMALL_SW, SPR_SUB_SMALL_NW, SPR_SUB_SMALL_NW}; +static const SpriteID _disaster_images_5[] = {SPR_SUB_LARGE_NE, SPR_SUB_LARGE_NE, SPR_SUB_LARGE_SE, SPR_SUB_LARGE_SE, SPR_SUB_LARGE_SW, SPR_SUB_LARGE_SW, SPR_SUB_LARGE_NW, SPR_SUB_LARGE_NW}; +static const SpriteID _disaster_images_6[] = {SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER, SPR_UFO_HARVESTER}; +static const SpriteID _disaster_images_7[] = {SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER, SPR_XCOM_SKYRANGER}; +static const SpriteID _disaster_images_8[] = {SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A, SPR_AH_64A}; +static const SpriteID _disaster_images_9[] = {SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1, SPR_ROTOR_MOVING_1}; + +static const SpriteID * const _disaster_images[] = { + _disaster_images_1, _disaster_images_1, ///< zeppeliner and zeppeliner shadow + _disaster_images_2, _disaster_images_2, ///< small ufo and small ufo shadow + _disaster_images_3, _disaster_images_3, ///< combat aircraft and shadow + _disaster_images_8, _disaster_images_8, _disaster_images_9, ///< combat helicopter, shadow and rotor + _disaster_images_6, _disaster_images_6, ///< big ufo and shadow + _disaster_images_7, _disaster_images_7, ///< skyranger and shadow + _disaster_images_4, _disaster_images_5, ///< small and big submarine sprites +}; + +void DisasterVehicle::UpdateImage() +{ + SpriteID img = this->image_override; + if (img == 0) img = _disaster_images[this->subtype][this->direction]; + this->cur_image = img; +} + +/** + * Construct the disaster vehicle. + * @param x The X coordinate. + * @param y The Y coordinate. + * @param direction The direction the vehicle is facing. + * @param subtype The sub type of vehicle. + * @param big_ufo_destroyer_target The target for the UFO destroyer. + */ +DisasterVehicle::DisasterVehicle(int x, int y, Direction direction, DisasterSubType subtype, VehicleID big_ufo_destroyer_target) : + SpecializedVehicleBase(), big_ufo_destroyer_target(big_ufo_destroyer_target) +{ + this->vehstatus = VS_UNCLICKABLE; + + this->x_pos = x; + this->y_pos = y; + switch (subtype) { + case ST_ZEPPELINER: + case ST_SMALL_UFO: + case ST_AIRPLANE: + case ST_HELICOPTER: + case ST_BIG_UFO: + case ST_BIG_UFO_DESTROYER: + GetAircraftFlightLevelBounds(this, &this->z_pos, NULL); + break; + + case ST_HELICOPTER_ROTORS: + GetAircraftFlightLevelBounds(this, &this->z_pos, NULL); + this->z_pos += ROTOR_Z_OFFSET; + break; + + case ST_SMALL_SUBMARINE: + case ST_BIG_SUBMARINE: + this->z_pos = 0; + break; + + case ST_ZEPPELINER_SHADOW: + case ST_SMALL_UFO_SHADOW: + case ST_AIRPLANE_SHADOW: + case ST_HELICOPTER_SHADOW: + case ST_BIG_UFO_SHADOW: + case ST_BIG_UFO_DESTROYER_SHADOW: + this->z_pos = 0; + this->vehstatus |= VS_SHADOW; + break; + } + + this->direction = direction; + this->tile = TileVirtXY(x, y); + this->subtype = subtype; + this->UpdateDeltaXY(INVALID_DIR); + this->owner = OWNER_NONE; + this->image_override = 0; + this->current_order.Free(); + + this->UpdateImage(); + this->UpdatePositionAndViewport(); +} + +/** + * Update the position of the vehicle. + * @param x The new X-coordinate. + * @param y The new Y-coordinate. + * @param z The new Z-coordinate. + */ +void DisasterVehicle::UpdatePosition(int x, int y, int z) +{ + this->x_pos = x; + this->y_pos = y; + this->z_pos = z; + this->tile = TileVirtXY(x, y); + + this->UpdateImage(); + this->UpdatePositionAndViewport(); + + DisasterVehicle *u = this->Next(); + if (u != NULL) { + int safe_x = Clamp(x, 0, MapMaxX() * TILE_SIZE); + int safe_y = Clamp(y - 1, 0, MapMaxY() * TILE_SIZE); + + u->x_pos = x; + u->y_pos = y - 1 - (max(z - GetSlopePixelZ(safe_x, safe_y), 0) >> 3); + safe_y = Clamp(u->y_pos, 0, MapMaxY() * TILE_SIZE); + u->z_pos = GetSlopePixelZ(safe_x, safe_y); + u->direction = this->direction; + + u->UpdateImage(); + u->UpdatePositionAndViewport(); + + if ((u = u->Next()) != NULL) { + u->x_pos = x; + u->y_pos = y; + u->z_pos = z + ROTOR_Z_OFFSET; + u->UpdatePositionAndViewport(); + } + } +} + +/** + * Zeppeliner handling, v->current_order.dest states: + * 0: Zeppeliner initialization has found a small airport, go there and crash + * 1: Create crash and animate falling down for extra dramatic effect + * 2: Create more smoke and leave debris on ground + * 2: Clear the runway after some time and remove crashed zeppeliner + * If not airport was found, only state 0 is reached until zeppeliner leaves map + */ +static bool DisasterTick_Zeppeliner(DisasterVehicle *v) +{ + v->tick_counter++; + + if (v->current_order.GetDestination() < 2) { + if (HasBit(v->tick_counter, 0)) return true; + + GetNewVehiclePosResult gp = GetNewVehiclePos(v); + + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); + + if (v->current_order.GetDestination() == 1) { + if (++v->age == 38) { + v->current_order.SetDestination(2); + v->age = 0; + } + + if (GB(v->tick_counter, 0, 3) == 0) CreateEffectVehicleRel(v, 0, -17, 2, EV_CRASH_SMOKE); + + } else if (v->current_order.GetDestination() == 0) { + if (IsValidTile(v->tile) && IsAirportTile(v->tile)) { + v->current_order.SetDestination(1); + v->age = 0; + + SetDParam(0, GetStationIndex(v->tile)); + AddVehicleNewsItem(STR_NEWS_DISASTER_ZEPPELIN, NT_ACCIDENT, v->index); // Delete the news, when the zeppelin is gone + AI::NewEvent(GetTileOwner(v->tile), new ScriptEventDisasterZeppelinerCrashed(GetStationIndex(v->tile))); + } + } + + if (v->y_pos >= (int)((MapSizeY() + 9) * TILE_SIZE - 1)) { + delete v; + return false; + } + + return true; + } + + if (v->current_order.GetDestination() > 2) { + if (++v->age <= 13320) return true; + + if (IsValidTile(v->tile) && IsAirportTile(v->tile)) { + Station *st = Station::GetByTile(v->tile); + CLRBITS(st->airport.flags, RUNWAY_IN_block); + AI::NewEvent(GetTileOwner(v->tile), new ScriptEventDisasterZeppelinerCleared(st->index)); + } + + v->UpdatePosition(v->x_pos, v->y_pos, GetAircraftFlightLevel(v)); + delete v; + return false; + } + + int x = v->x_pos; + int y = v->y_pos; + int z = GetSlopePixelZ(x, y); + if (z < v->z_pos) z = v->z_pos - 1; + v->UpdatePosition(x, y, z); + + if (++v->age == 1) { + CreateEffectVehicleRel(v, 0, 7, 8, EV_EXPLOSION_LARGE); + if (_settings_client.sound.disaster) SndPlayVehicleFx(SND_12_EXPLOSION, v); + v->image_override = SPR_BLIMP_CRASHING; + } else if (v->age == 70) { + v->image_override = SPR_BLIMP_CRASHED; + } else if (v->age <= 300) { + if (GB(v->tick_counter, 0, 3) == 0) { + uint32 r = Random(); + + CreateEffectVehicleRel(v, + GB(r, 0, 4) - 7, + GB(r, 4, 4) - 7, + GB(r, 8, 3) + 5, + EV_EXPLOSION_SMALL); + } + } else if (v->age == 350) { + v->current_order.SetDestination(3); + v->age = 0; + } + + if (IsValidTile(v->tile) && IsAirportTile(v->tile)) { + SETBITS(Station::GetByTile(v->tile)->airport.flags, RUNWAY_IN_block); + } + + return true; +} + +/** + * (Small) Ufo handling, v->current_order.dest states: + * 0: Fly around to the middle of the map, then randomly, after a while target a road vehicle + * 1: Home in on a road vehicle and crash it >:) + * If not road vehicle was found, only state 0 is used and Ufo disappears after a while + */ +static bool DisasterTick_Ufo(DisasterVehicle *v) +{ + v->image_override = (HasBit(++v->tick_counter, 3)) ? SPR_UFO_SMALL_SCOUT_DARKER : SPR_UFO_SMALL_SCOUT; + + if (v->current_order.GetDestination() == 0) { + /* Fly around randomly */ + int x = TileX(v->dest_tile) * TILE_SIZE; + int y = TileY(v->dest_tile) * TILE_SIZE; + if (Delta(x, v->x_pos) + Delta(y, v->y_pos) >= (int)TILE_SIZE) { + v->direction = GetDirectionTowards(v, x, y); + GetNewVehiclePosResult gp = GetNewVehiclePos(v); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); + return true; + } + if (++v->age < 6) { + v->dest_tile = RandomTile(); + return true; + } + v->current_order.SetDestination(1); + + uint n = 0; // Total number of targetable road vehicles. + RoadVehicle *u; + FOR_ALL_ROADVEHICLES(u) { + if (u->IsFrontEngine()) n++; + } + + if (n == 0) { + /* If there are no targetable road vehicles, destroy the UFO. */ + delete v; + return false; + } + + n = RandomRange(n); // Choose one of them. + FOR_ALL_ROADVEHICLES(u) { + /* Find (n+1)-th road vehicle. */ + if (u->IsFrontEngine() && (n-- == 0)) break; + } + + /* Target it. */ + v->dest_tile = u->index; + v->age = 0; + return true; + } else { + /* Target a vehicle */ + RoadVehicle *u = RoadVehicle::Get(v->dest_tile); + assert(u != NULL && u->type == VEH_ROAD && u->IsFrontEngine()); + + uint dist = Delta(v->x_pos, u->x_pos) + Delta(v->y_pos, u->y_pos); + + if (dist < TILE_SIZE && !(u->vehstatus & VS_HIDDEN) && u->breakdown_ctr == 0) { + u->breakdown_ctr = 3; + u->breakdown_delay = 140; + } + + v->direction = GetDirectionTowards(v, u->x_pos, u->y_pos); + GetNewVehiclePosResult gp = GetNewVehiclePos(v); + + int z = v->z_pos; + if (dist <= TILE_SIZE && z > u->z_pos) z--; + v->UpdatePosition(gp.x, gp.y, z); + + if (z <= u->z_pos && (u->vehstatus & VS_HIDDEN) == 0) { + v->age++; + if (u->crashed_ctr == 0) { + u->Crash(); + + AddVehicleNewsItem(STR_NEWS_DISASTER_SMALL_UFO, NT_ACCIDENT, u->index); // delete the news, when the roadvehicle is gone + + AI::NewEvent(u->owner, new ScriptEventVehicleCrashed(u->index, u->tile, ScriptEventVehicleCrashed::CRASH_RV_UFO)); + Game::NewEvent(new ScriptEventVehicleCrashed(u->index, u->tile, ScriptEventVehicleCrashed::CRASH_RV_UFO)); + } + } + + /* Destroy? */ + if (v->age > 50) { + CreateEffectVehicleRel(v, 0, 7, 8, EV_EXPLOSION_LARGE); + if (_settings_client.sound.disaster) SndPlayVehicleFx(SND_12_EXPLOSION, v); + delete v; + return false; + } + } + + return true; +} + +static void DestructIndustry(Industry *i) +{ + for (TileIndex tile = 0; tile != MapSize(); tile++) { + if (i->TileBelongsToIndustry(tile)) { + ResetIndustryConstructionStage(tile); + MarkTileDirtyByTile(tile); + } + } +} + +/** + * Aircraft handling, v->current_order.dest states: + * 0: Fly towards the targeted industry + * 1: If within 15 tiles, fire away rockets and destroy industry + * 2: Industry explosions + * 3: Fly out of the map + * If the industry was removed in the meantime just fly to the end of the map. + * @param v The disaster vehicle. + * @param image_override The image at the time the aircraft is firing. + * @param leave_at_top True iff the vehicle leaves the map at the north side. + * @param news_message The string that's used as news message. + * @param industry_flag Only attack industries that have this flag set. + */ +static bool DisasterTick_Aircraft(DisasterVehicle *v, uint16 image_override, bool leave_at_top, StringID news_message, IndustryBehaviour industry_flag) +{ + v->tick_counter++; + v->image_override = (v->current_order.GetDestination() == 1 && HasBit(v->tick_counter, 2)) ? image_override : 0; + + GetNewVehiclePosResult gp = GetNewVehiclePos(v); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); + + if ((leave_at_top && gp.x < (-10 * (int)TILE_SIZE)) || (!leave_at_top && gp.x > (int)(MapSizeX() * TILE_SIZE + 9 * TILE_SIZE) - 1)) { + delete v; + return false; + } + + if (v->current_order.GetDestination() == 2) { + if (GB(v->tick_counter, 0, 2) == 0) { + Industry *i = Industry::Get(v->dest_tile); // Industry destructor calls ReleaseDisastersTargetingIndustry, so this is valid + int x = TileX(i->location.tile) * TILE_SIZE; + int y = TileY(i->location.tile) * TILE_SIZE; + uint32 r = Random(); + + CreateEffectVehicleAbove( + GB(r, 0, 6) + x, + GB(r, 6, 6) + y, + GB(r, 12, 4), + EV_EXPLOSION_SMALL); + + if (++v->age >= 55) v->current_order.SetDestination(3); + } + } else if (v->current_order.GetDestination() == 1) { + if (++v->age == 112) { + v->current_order.SetDestination(2); + v->age = 0; + + Industry *i = Industry::Get(v->dest_tile); // Industry destructor calls ReleaseDisastersTargetingIndustry, so this is valid + DestructIndustry(i); + + SetDParam(0, i->town->index); + AddIndustryNewsItem(news_message, NT_ACCIDENT, i->index); // delete the news, when the industry closes + if (_settings_client.sound.disaster) SndPlayTileFx(SND_12_EXPLOSION, i->location.tile); + } + } else if (v->current_order.GetDestination() == 0) { + int x = v->x_pos + ((leave_at_top ? -15 : 15) * TILE_SIZE); + int y = v->y_pos; + + if ((uint)x > MapMaxX() * TILE_SIZE - 1) return true; + + TileIndex tile = TileVirtXY(x, y); + if (!IsTileType(tile, MP_INDUSTRY)) return true; + + IndustryID ind = GetIndustryIndex(tile); + v->dest_tile = ind; + + if (GetIndustrySpec(Industry::Get(ind)->type)->behaviour & industry_flag) { + v->current_order.SetDestination(1); + v->age = 0; + } + } + + return true; +} + +/** Airplane handling. */ +static bool DisasterTick_Airplane(DisasterVehicle *v) +{ + return DisasterTick_Aircraft(v, SPR_F_15_FIRING, true, STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY, INDUSTRYBEH_AIRPLANE_ATTACKS); +} + +/** Helicopter handling. */ +static bool DisasterTick_Helicopter(DisasterVehicle *v) +{ + return DisasterTick_Aircraft(v, SPR_AH_64A_FIRING, false, STR_NEWS_DISASTER_HELICOPTER_FACTORY, INDUSTRYBEH_CHOPPER_ATTACKS); +} + +/** Helicopter rotor blades; keep these spinning */ +static bool DisasterTick_Helicopter_Rotors(DisasterVehicle *v) +{ + v->tick_counter++; + if (HasBit(v->tick_counter, 0)) return true; + + if (++v->cur_image > SPR_ROTOR_MOVING_3) v->cur_image = SPR_ROTOR_MOVING_1; + + v->UpdatePositionAndViewport(); + + return true; +} + +/** + * (Big) Ufo handling, v->current_order.dest states: + * 0: Fly around to the middle of the map, then randomly for a while and home in on a piece of rail + * 1: Land there and breakdown all trains in a radius of 12 tiles; and now we wait... + * because as soon as the Ufo lands, a fighter jet, a Skyranger, is called to clear up the mess + */ +static bool DisasterTick_Big_Ufo(DisasterVehicle *v) +{ + v->tick_counter++; + + if (v->current_order.GetDestination() == 1) { + int x = TileX(v->dest_tile) * TILE_SIZE + TILE_SIZE / 2; + int y = TileY(v->dest_tile) * TILE_SIZE + TILE_SIZE / 2; + if (Delta(v->x_pos, x) + Delta(v->y_pos, y) >= 8) { + v->direction = GetDirectionTowards(v, x, y); + + GetNewVehiclePosResult gp = GetNewVehiclePos(v); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); + return true; + } + + if (!IsValidTile(v->dest_tile)) { + /* Make sure we don't land outside the map. */ + delete v; + return false; + } + + int z = GetSlopePixelZ(v->x_pos, v->y_pos); + if (z < v->z_pos) { + v->UpdatePosition(v->x_pos, v->y_pos, v->z_pos - 1); + return true; + } + + v->current_order.SetDestination(2); + + Vehicle *target; + FOR_ALL_VEHICLES(target) { + if (target->IsGroundVehicle()) { + if (Delta(target->x_pos, v->x_pos) + Delta(target->y_pos, v->y_pos) <= 12 * (int)TILE_SIZE) { + target->breakdown_ctr = 5; + target->breakdown_delay = 0xF0; + } + } + } + + Town *t = ClosestTownFromTile(v->dest_tile, UINT_MAX); + SetDParam(0, t->index); + AddTileNewsItem(STR_NEWS_DISASTER_BIG_UFO, NT_ACCIDENT, v->tile); + + if (!Vehicle::CanAllocateItem(2)) { + delete v; + return false; + } + DisasterVehicle *u = new DisasterVehicle(-6 * (int)TILE_SIZE, v->y_pos, DIR_SW, ST_BIG_UFO_DESTROYER, v->index); + DisasterVehicle *w = new DisasterVehicle(-6 * (int)TILE_SIZE, v->y_pos, DIR_SW, ST_BIG_UFO_DESTROYER_SHADOW); + u->SetNext(w); + } else if (v->current_order.GetDestination() == 0) { + int x = TileX(v->dest_tile) * TILE_SIZE; + int y = TileY(v->dest_tile) * TILE_SIZE; + if (Delta(x, v->x_pos) + Delta(y, v->y_pos) >= (int)TILE_SIZE) { + v->direction = GetDirectionTowards(v, x, y); + GetNewVehiclePosResult gp = GetNewVehiclePos(v); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); + return true; + } + + if (++v->age < 6) { + v->dest_tile = RandomTile(); + return true; + } + v->current_order.SetDestination(1); + + TileIndex tile_org = RandomTile(); + TileIndex tile = tile_org; + do { + if (IsPlainRailTile(tile) && + Company::IsHumanID(GetTileOwner(tile))) { + break; + } + tile = TILE_MASK(tile + 1); + } while (tile != tile_org); + v->dest_tile = tile; + v->age = 0; + } + + return true; +} + +/** + * Skyranger destroying (Big) Ufo handling, v->current_order.dest states: + * 0: Home in on landed Ufo and shoot it down + */ +static bool DisasterTick_Big_Ufo_Destroyer(DisasterVehicle *v) +{ + v->tick_counter++; + + GetNewVehiclePosResult gp = GetNewVehiclePos(v); + v->UpdatePosition(gp.x, gp.y, GetAircraftFlightLevel(v)); + + if (gp.x > (int)(MapSizeX() * TILE_SIZE + 9 * TILE_SIZE) - 1) { + delete v; + return false; + } + + if (v->current_order.GetDestination() == 0) { + Vehicle *u = Vehicle::Get(v->big_ufo_destroyer_target); + if (Delta(v->x_pos, u->x_pos) > (int)TILE_SIZE) return true; + v->current_order.SetDestination(1); + + CreateEffectVehicleRel(u, 0, 7, 8, EV_EXPLOSION_LARGE); + if (_settings_client.sound.disaster) SndPlayVehicleFx(SND_12_EXPLOSION, u); + + delete u; + + for (int i = 0; i != 80; i++) { + uint32 r = Random(); + CreateEffectVehicleAbove( + GB(r, 0, 6) + v->x_pos - 32, + GB(r, 5, 6) + v->y_pos - 32, + 0, + EV_EXPLOSION_SMALL); + } + + for (int dy = -3; dy < 3; dy++) { + for (int dx = -3; dx < 3; dx++) { + TileIndex tile = TileAddWrap(v->tile, dx, dy); + if (tile != INVALID_TILE) DisasterClearSquare(tile); + } + } + } + + return true; +} + +/** + * Submarine, v->current_order.dest states: + * Unused, just float around aimlessly and pop up at different places, turning around + */ +static bool DisasterTick_Submarine(DisasterVehicle *v) +{ + v->tick_counter++; + + if (++v->age > 8880) { + delete v; + return false; + } + + if (!HasBit(v->tick_counter, 0)) return true; + + TileIndex tile = v->tile + TileOffsByDiagDir(DirToDiagDir(v->direction)); + if (IsValidTile(tile)) { + TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0)); + if (trackbits == TRACK_BIT_ALL && !Chance16(1, 90)) { + GetNewVehiclePosResult gp = GetNewVehiclePos(v); + v->UpdatePosition(gp.x, gp.y, v->z_pos); + return true; + } + } + + v->direction = ChangeDir(v->direction, GB(Random(), 0, 1) ? DIRDIFF_90RIGHT : DIRDIFF_90LEFT); + + return true; +} + + +static bool DisasterTick_NULL(DisasterVehicle *v) +{ + return true; +} + +typedef bool DisasterVehicleTickProc(DisasterVehicle *v); + +static DisasterVehicleTickProc * const _disastervehicle_tick_procs[] = { + DisasterTick_Zeppeliner, DisasterTick_NULL, + DisasterTick_Ufo, DisasterTick_NULL, + DisasterTick_Airplane, DisasterTick_NULL, + DisasterTick_Helicopter, DisasterTick_NULL, DisasterTick_Helicopter_Rotors, + DisasterTick_Big_Ufo, DisasterTick_NULL, DisasterTick_Big_Ufo_Destroyer, + DisasterTick_NULL, + DisasterTick_Submarine, + DisasterTick_Submarine, +}; + + +bool DisasterVehicle::Tick() +{ + return _disastervehicle_tick_procs[this->subtype](this); +} + +typedef void DisasterInitProc(); + + +/** + * Zeppeliner which crashes on a small airport if one found, + * otherwise crashes on a random tile + */ +static void Disaster_Zeppeliner_Init() +{ + if (!Vehicle::CanAllocateItem(2)) return; + + /* Pick a random place, unless we find a small airport */ + int x = TileX(Random()) * TILE_SIZE + TILE_SIZE / 2; + + Station *st; + FOR_ALL_STATIONS(st) { + if (st->airport.tile != INVALID_TILE && (st->airport.type == AT_SMALL || st->airport.type == AT_LARGE)) { + x = (TileX(st->airport.tile) + 2) * TILE_SIZE; + break; + } + } + + DisasterVehicle *v = new DisasterVehicle(x, 0, DIR_SE, ST_ZEPPELINER); + /* Allocate shadow */ + DisasterVehicle *u = new DisasterVehicle(x, 0, DIR_SE, ST_ZEPPELINER_SHADOW); + v->SetNext(u); +} + + +/** + * Ufo which flies around aimlessly from the middle of the map a bit + * until it locates a road vehicle which it targets and then destroys + */ +static void Disaster_Small_Ufo_Init() +{ + if (!Vehicle::CanAllocateItem(2)) return; + + int x = TileX(Random()) * TILE_SIZE + TILE_SIZE / 2; + DisasterVehicle *v = new DisasterVehicle(x, 0, DIR_SE, ST_SMALL_UFO); + v->dest_tile = TileXY(MapSizeX() / 2, MapSizeY() / 2); + + /* Allocate shadow */ + DisasterVehicle *u = new DisasterVehicle(x, 0, DIR_SE, ST_SMALL_UFO_SHADOW); + v->SetNext(u); +} + + +/* Combat airplane which destroys an oil refinery */ +static void Disaster_Airplane_Init() +{ + if (!Vehicle::CanAllocateItem(2)) return; + + Industry *i, *found = NULL; + + FOR_ALL_INDUSTRIES(i) { + if ((GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_AIRPLANE_ATTACKS) && + (found == NULL || Chance16(1, 2))) { + found = i; + } + } + + if (found == NULL) return; + + /* Start from the bottom (south side) of the map */ + int x = (MapSizeX() + 9) * TILE_SIZE - 1; + int y = TileY(found->location.tile) * TILE_SIZE + 37; + + DisasterVehicle *v = new DisasterVehicle(x, y, DIR_NE, ST_AIRPLANE); + DisasterVehicle *u = new DisasterVehicle(x, y, DIR_NE, ST_AIRPLANE_SHADOW); + v->SetNext(u); +} + + +/** Combat helicopter that destroys a factory */ +static void Disaster_Helicopter_Init() +{ + if (!Vehicle::CanAllocateItem(3)) return; + + Industry *i, *found = NULL; + + FOR_ALL_INDUSTRIES(i) { + if ((GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_CHOPPER_ATTACKS) && + (found == NULL || Chance16(1, 2))) { + found = i; + } + } + + if (found == NULL) return; + + int x = -16 * (int)TILE_SIZE; + int y = TileY(found->location.tile) * TILE_SIZE + 37; + + DisasterVehicle *v = new DisasterVehicle(x, y, DIR_SW, ST_HELICOPTER); + DisasterVehicle *u = new DisasterVehicle(x, y, DIR_SW, ST_HELICOPTER_SHADOW); + v->SetNext(u); + + DisasterVehicle *w = new DisasterVehicle(x, y, DIR_SW, ST_HELICOPTER_ROTORS); + u->SetNext(w); +} + + +/* Big Ufo which lands on a piece of rail and will consequently be shot + * down by a combat airplane, destroying the surroundings */ +static void Disaster_Big_Ufo_Init() +{ + if (!Vehicle::CanAllocateItem(2)) return; + + int x = TileX(Random()) * TILE_SIZE + TILE_SIZE / 2; + int y = MapMaxX() * TILE_SIZE - 1; + + DisasterVehicle *v = new DisasterVehicle(x, y, DIR_NW, ST_BIG_UFO); + v->dest_tile = TileXY(MapSizeX() / 2, MapSizeY() / 2); + + /* Allocate shadow */ + DisasterVehicle *u = new DisasterVehicle(x, y, DIR_NW, ST_BIG_UFO_SHADOW); + v->SetNext(u); +} + + +static void Disaster_Submarine_Init(DisasterSubType subtype) +{ + if (!Vehicle::CanAllocateItem()) return; + + int y; + Direction dir; + uint32 r = Random(); + int x = TileX(r) * TILE_SIZE + TILE_SIZE / 2; + + if (HasBit(r, 31)) { + y = MapMaxY() * TILE_SIZE - TILE_SIZE / 2 - 1; + dir = DIR_NW; + } else { + y = TILE_SIZE / 2; + if (_settings_game.construction.freeform_edges) y += TILE_SIZE; + dir = DIR_SE; + } + if (!IsWaterTile(TileVirtXY(x, y))) return; + + new DisasterVehicle(x, y, dir, subtype); +} + +/* Curious submarine #1, just floats around */ +static void Disaster_Small_Submarine_Init() +{ + Disaster_Submarine_Init(ST_SMALL_SUBMARINE); +} + + +/* Curious submarine #2, just floats around */ +static void Disaster_Big_Submarine_Init() +{ + Disaster_Submarine_Init(ST_BIG_SUBMARINE); +} + + +/** + * Coal mine catastrophe, destroys a stretch of 30 tiles of + * land in a certain direction + */ +static void Disaster_CoalMine_Init() +{ + int index = GB(Random(), 0, 4); + uint m; + + for (m = 0; m < 15; m++) { + const Industry *i; + + FOR_ALL_INDUSTRIES(i) { + if ((GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_CAN_SUBSIDENCE) && --index < 0) { + SetDParam(0, i->town->index); + AddTileNewsItem(STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE, NT_ACCIDENT, i->location.tile + TileDiffXY(1, 1)); // keep the news, even when the mine closes + + { + TileIndex tile = i->location.tile; + TileIndexDiff step = TileOffsByDiagDir((DiagDirection)GB(Random(), 0, 2)); + + for (uint n = 0; n < 30; n++) { + DisasterClearSquare(tile); + tile += step; + if (!IsValidTile(tile)) break; + } + } + return; + } + } + } +} + +struct Disaster { + DisasterInitProc *init_proc; ///< The init function for this disaster. + Year min_year; ///< The first year this disaster will occur. + Year max_year; ///< The last year this disaster will occur. +}; + +static const Disaster _disasters[] = { + {Disaster_Zeppeliner_Init, 1930, 1955}, // zeppeliner + {Disaster_Small_Ufo_Init, 1940, 1970}, // ufo (small) + {Disaster_Airplane_Init, 1960, 1990}, // airplane + {Disaster_Helicopter_Init, 1970, 2000}, // helicopter + {Disaster_Big_Ufo_Init, 2000, 2100}, // ufo (big) + {Disaster_Small_Submarine_Init, 1940, 1965}, // submarine (small) + {Disaster_Big_Submarine_Init, 1975, 2010}, // submarine (big) + {Disaster_CoalMine_Init, 1950, 1985}, // coalmine +}; + +static void DoDisaster() +{ + byte buf[lengthof(_disasters)]; + + byte j = 0; + for (size_t i = 0; i != lengthof(_disasters); i++) { + if (_cur_year >= _disasters[i].min_year && _cur_year < _disasters[i].max_year) buf[j++] = (byte)i; + } + + if (j == 0) return; + + _disasters[buf[RandomRange(j)]].init_proc(); +} + + +static void ResetDisasterDelay() +{ + _disaster_delay = GB(Random(), 0, 9) + 730; +} + +void DisasterDailyLoop() +{ + if (--_disaster_delay != 0) return; + + ResetDisasterDelay(); + + if (_settings_game.difficulty.disasters != 0) DoDisaster(); +} + +void StartupDisasters() +{ + ResetDisasterDelay(); +} + +/** + * Marks all disasters targeting this industry in such a way + * they won't call Industry::Get(v->dest_tile) on invalid industry anymore. + * @param i deleted industry + */ +void ReleaseDisastersTargetingIndustry(IndustryID i) +{ + DisasterVehicle *v; + FOR_ALL_DISASTERVEHICLES(v) { + /* primary disaster vehicles that have chosen target */ + if (v->subtype == ST_AIRPLANE || v->subtype == ST_HELICOPTER) { + /* if it has chosen target, and it is this industry (yes, dest_tile is IndustryID here), set order to "leaving map peacefully" */ + if (v->current_order.GetDestination() > 0 && v->dest_tile == i) v->current_order.SetDestination(3); + } + } +} + +/** + * Notify disasters that we are about to delete a vehicle. So make them head elsewhere. + * @param vehicle deleted vehicle + */ +void ReleaseDisastersTargetingVehicle(VehicleID vehicle) +{ + DisasterVehicle *v; + FOR_ALL_DISASTERVEHICLES(v) { + /* primary disaster vehicles that have chosen target */ + if (v->subtype == ST_SMALL_UFO) { + if (v->current_order.GetDestination() != 0 && v->dest_tile == vehicle) { + /* Revert to target-searching */ + v->current_order.SetDestination(0); + v->dest_tile = RandomTile(); + GetAircraftFlightLevelBounds(v, &v->z_pos, NULL); + v->age = 0; + } + } + } +} + +void DisasterVehicle::UpdateDeltaXY(Direction direction) +{ + this->x_offs = -1; + this->y_offs = -1; + this->x_extent = 2; + this->y_extent = 2; + this->z_extent = 5; +} diff --git a/src/disaster_vehicle.h b/src/disaster_vehicle.h new file mode 100644 index 0000000000..5b2d3f9da4 --- /dev/null +++ b/src/disaster_vehicle.h @@ -0,0 +1,62 @@ +/* $Id: disaster_vehicle.h 26872 2014-09-21 11:12:42Z rubidium $ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file disaster_vehicle.h All disaster vehicles. */ + +#ifndef DISASTER_VEHICLE_H +#define DISASTER_VEHICLE_H + +#include "vehicle_base.h" + +/** Different sub types of disaster vehicles. */ +enum DisasterSubType { + ST_ZEPPELINER, ///< Zeppelin, crashes at airports. + ST_ZEPPELINER_SHADOW, ///< Shadow of the zeppelin. + ST_SMALL_UFO, ///< Small UFO, tries to find a road vehicle to destroy. + ST_SMALL_UFO_SHADOW, ///< Shadow of small UFO + ST_AIRPLANE, ///< Airplane destroying an oil refinery + ST_AIRPLANE_SHADOW, ///< Shadow of airplane + ST_HELICOPTER, ///< Helicopter destroying a factory. + ST_HELICOPTER_SHADOW, ///< Shadow of helicopter. + ST_HELICOPTER_ROTORS, ///< Rotors of helicopter. + ST_BIG_UFO, ///< Big UFO, finds a piece of railroad to "park" on + ST_BIG_UFO_SHADOW, ///< Shadow of the big UFO + ST_BIG_UFO_DESTROYER, ///< Aircraft the will bomb the big UFO + ST_BIG_UFO_DESTROYER_SHADOW, ///< Shadow of the aircraft. + ST_SMALL_SUBMARINE, ///< Small submarine, pops up in the oceans but doesn't do anything + ST_BIG_SUBMARINE, ///< Big submarine, pops up in the oceans but doesn't do anything +}; + +/** + * Disasters, like submarines, skyrangers and their shadows, belong to this class. + */ +struct DisasterVehicle FINAL : public SpecializedVehicle { + SpriteID image_override; ///< Override for the default disaster vehicle sprite. + VehicleID big_ufo_destroyer_target; ///< The big UFO that this destroyer is supposed to bomb. + byte flags; ///< Flags about the state of the vehicle, @see AirVehicleFlags + + /** For use by saveload. */ + DisasterVehicle() : SpecializedVehicleBase() {} + DisasterVehicle(int x, int y, Direction direction, DisasterSubType subtype, VehicleID big_ufo_destroyer_target = VEH_INVALID); + /** We want to 'destruct' the right class. */ + virtual ~DisasterVehicle() {} + + void UpdatePosition(int x, int y, int z); + void UpdateDeltaXY(Direction direction); + void UpdateImage(); + bool Tick(); +}; + +/** + * Iterate over disaster vehicles. + * @param var The variable used to iterate over. + */ +#define FOR_ALL_DISASTERVEHICLES(var) FOR_ALL_VEHICLES_OF_TYPE(DisasterVehicle, var) + +#endif /* DISASTER_VEHICLE_H */ diff --git a/src/lang/latin.txt b/src/lang/latin.txt new file mode 100644 index 0000000000..b39e5b3a02 --- /dev/null +++ b/src/lang/latin.txt @@ -0,0 +1,5288 @@ +##name Latin +##ownname Latina +##isocode la_VA +##plural 0 +##textdir ltr +##digitsep {NBSP} +##digitsepcur {NBSP} +##decimalsep . +##winlangid 0x0476 +##grflangid 0x66 +##gender m f n mp fp np +##case gen acc abl dat + + +# $Id: latin.txt 27184 2015-03-13 20:53:29Z rubidium $ + +# This file is part of OpenTTD. +# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + + +##id 0x0000 +STR_NULL : +STR_EMPTY : +STR_UNDEFINED :(series irrita) +STR_JUST_NOTHING :Nihil + +# Cargo related strings +# Plural cargo name +STR_CARGO_PLURAL_NOTHING : +STR_CARGO_PLURAL_PASSENGERS :{G=mp}Vectores +STR_CARGO_PLURAL_PASSENGERS.gen :{G=mp}vectorum +STR_CARGO_PLURAL_PASSENGERS.acc :{G=mp}Vectores +STR_CARGO_PLURAL_PASSENGERS.dat :{G=mp}Vectoribus +STR_CARGO_PLURAL_COAL :{G=m}Carbo +STR_CARGO_PLURAL_COAL.gen :{G=m}carbonis +STR_CARGO_PLURAL_COAL.acc :{G=m}Carbonem +STR_CARGO_PLURAL_COAL.dat :{G=m}Carboni +STR_CARGO_PLURAL_MAIL :{G=fp}Epistulae +STR_CARGO_PLURAL_MAIL.gen :{G=fp}epistularum +STR_CARGO_PLURAL_MAIL.acc :{G=fp}Epistulas +STR_CARGO_PLURAL_MAIL.dat :{G=fp}Epistulis +STR_CARGO_PLURAL_OIL :{G=n}Petroleum +STR_CARGO_PLURAL_OIL.gen :{G=n}petrolei +STR_CARGO_PLURAL_OIL.acc :{G=n}Petroleum +STR_CARGO_PLURAL_OIL.dat :{G=n}Petroleo +STR_CARGO_PLURAL_LIVESTOCK :{G=np}Pecora +STR_CARGO_PLURAL_LIVESTOCK.gen :{G=np}pecorum +STR_CARGO_PLURAL_LIVESTOCK.acc :{G=np}Pecora +STR_CARGO_PLURAL_LIVESTOCK.dat :{G=np}Pecoribus +STR_CARGO_PLURAL_GOODS :{G=fp}Merces +STR_CARGO_PLURAL_GOODS.gen :{G=fp}mercium +STR_CARGO_PLURAL_GOODS.acc :{G=fp}Merces +STR_CARGO_PLURAL_GOODS.dat :{G=fp}Mercibus +STR_CARGO_PLURAL_GRAIN :{G=n}Frumentum +STR_CARGO_PLURAL_GRAIN.gen :{G=n}frumenti +STR_CARGO_PLURAL_GRAIN.acc :{G=n}Frumentum +STR_CARGO_PLURAL_GRAIN.dat :{G=n}Frumento +STR_CARGO_PLURAL_WOOD :{G=n}Lignum +STR_CARGO_PLURAL_WOOD.gen :{G=n}ligni +STR_CARGO_PLURAL_WOOD.acc :{G=n}Lignum +STR_CARGO_PLURAL_WOOD.dat :{G=n}Ligno +STR_CARGO_PLURAL_IRON_ORE :{G=n}Ferrum +STR_CARGO_PLURAL_IRON_ORE.gen :{G=n}ferri +STR_CARGO_PLURAL_IRON_ORE.acc :{G=n}Ferrum +STR_CARGO_PLURAL_IRON_ORE.dat :{G=n}Ferro +STR_CARGO_PLURAL_STEEL :{G=m}Chalybs +STR_CARGO_PLURAL_STEEL.gen :{G=m}chalybis +STR_CARGO_PLURAL_STEEL.acc :{G=m}Chalybem +STR_CARGO_PLURAL_STEEL.dat :{G=m}Chalybi +STR_CARGO_PLURAL_VALUABLES :{G=fp}Res Pretiosa +STR_CARGO_PLURAL_VALUABLES.gen :{G=fp}rerum pretiosarum +STR_CARGO_PLURAL_VALUABLES.acc :{G=fp}Res Pretiosas +STR_CARGO_PLURAL_VALUABLES.dat :{G=fp}Rebus Pretiosis +STR_CARGO_PLURAL_COPPER_ORE :{G=n}Aes +STR_CARGO_PLURAL_COPPER_ORE.gen :{G=n}aeris +STR_CARGO_PLURAL_COPPER_ORE.acc :{G=n}Aes +STR_CARGO_PLURAL_COPPER_ORE.dat :{G=n}Aeri +STR_CARGO_PLURAL_MAIZE :{G=n}Maizium +STR_CARGO_PLURAL_MAIZE.gen :{G=n}maizii +STR_CARGO_PLURAL_MAIZE.acc :{G=n}Maizium +STR_CARGO_PLURAL_MAIZE.dat :{G=n}Maizio +STR_CARGO_PLURAL_FRUIT :{G=mp}Fructus +STR_CARGO_PLURAL_FRUIT.gen :{G=mp}fructuum +STR_CARGO_PLURAL_FRUIT.acc :{G=mp}Fructus +STR_CARGO_PLURAL_FRUIT.dat :{G=mp}Fructibus +STR_CARGO_PLURAL_DIAMONDS :{G=mp}Adamantes +STR_CARGO_PLURAL_DIAMONDS.gen :{G=mp}adamantum +STR_CARGO_PLURAL_DIAMONDS.acc :{G=mp}Adamantes +STR_CARGO_PLURAL_DIAMONDS.dat :{G=mp}Adamantibus +STR_CARGO_PLURAL_FOOD :{G=m}Cibus +STR_CARGO_PLURAL_FOOD.gen :{G=m}cibi +STR_CARGO_PLURAL_FOOD.acc :{G=m}Cibum +STR_CARGO_PLURAL_FOOD.dat :{G=m}Cibo +STR_CARGO_PLURAL_PAPER :{G=f}Charta +STR_CARGO_PLURAL_PAPER.gen :{G=f}chartae +STR_CARGO_PLURAL_PAPER.acc :{G=f}Chartam +STR_CARGO_PLURAL_PAPER.dat :{G=f}Chartae +STR_CARGO_PLURAL_GOLD :{G=n}Aurum +STR_CARGO_PLURAL_GOLD.gen :{G=n}auri +STR_CARGO_PLURAL_GOLD.acc :{G=n}Aurum +STR_CARGO_PLURAL_GOLD.dat :{G=n}Auro +STR_CARGO_PLURAL_WATER :{G=f}Aqua +STR_CARGO_PLURAL_WATER.gen :{G=f}aquae +STR_CARGO_PLURAL_WATER.acc :{G=f}Aquam +STR_CARGO_PLURAL_WATER.dat :{G=f}Aquae +STR_CARGO_PLURAL_WHEAT :{G=n}Triticum +STR_CARGO_PLURAL_WHEAT.gen :{G=n}tritici +STR_CARGO_PLURAL_WHEAT.acc :{G=n}Triticum +STR_CARGO_PLURAL_WHEAT.dat :{G=n}Tritico +STR_CARGO_PLURAL_RUBBER :{G=f}Gummis +STR_CARGO_PLURAL_RUBBER.gen :{G=f}gummis +STR_CARGO_PLURAL_RUBBER.acc :{G=f}Gummem +STR_CARGO_PLURAL_RUBBER.dat :{G=f}Gummi +STR_CARGO_PLURAL_SUGAR :{G=n}Saccharum +STR_CARGO_PLURAL_SUGAR.gen :{G=n}sacchari +STR_CARGO_PLURAL_SUGAR.acc :{G=n}Saccharum +STR_CARGO_PLURAL_SUGAR.dat :{G=n}Saccharo +STR_CARGO_PLURAL_TOYS :{G=np}Ludicra +STR_CARGO_PLURAL_TOYS.gen :{G=np}ludicrorum +STR_CARGO_PLURAL_TOYS.acc :{G=np}Ludicra +STR_CARGO_PLURAL_TOYS.dat :{G=np}Ludicris +STR_CARGO_PLURAL_CANDY :{G=np}Bellaria +STR_CARGO_PLURAL_CANDY.gen :{G=np}bellariorum +STR_CARGO_PLURAL_CANDY.acc :{G=np}Bellaria +STR_CARGO_PLURAL_CANDY.dat :{G=np}Bellariis +STR_CARGO_PLURAL_COLA :{G=f}Cola +STR_CARGO_PLURAL_COLA.gen :{G=f}colae +STR_CARGO_PLURAL_COLA.acc :{G=f}Colam +STR_CARGO_PLURAL_COLA.dat :{G=f}Colae +STR_CARGO_PLURAL_COTTON_CANDY :{G=n}Sacchari Xylinum +STR_CARGO_PLURAL_COTTON_CANDY.gen :{G=n}sacchari xylini +STR_CARGO_PLURAL_COTTON_CANDY.acc :{G=n}Sacchari Xylinum +STR_CARGO_PLURAL_COTTON_CANDY.dat :{G=n}Sacchari Xylino +STR_CARGO_PLURAL_BUBBLES :{G=fp}Bullae +STR_CARGO_PLURAL_BUBBLES.gen :{G=fp}bullarum +STR_CARGO_PLURAL_BUBBLES.acc :{G=fp}Bullas +STR_CARGO_PLURAL_BUBBLES.dat :{G=fp}Bullis +STR_CARGO_PLURAL_TOFFEE :{G=n}Saccharum Tostum +STR_CARGO_PLURAL_TOFFEE.gen :{G=n}sacchari tosti +STR_CARGO_PLURAL_TOFFEE.acc :{G=n}Saccharum Tostum +STR_CARGO_PLURAL_TOFFEE.dat :{G=n}Saccharo Tosto +STR_CARGO_PLURAL_BATTERIES :{G=fp}Pilae Electricae +STR_CARGO_PLURAL_BATTERIES.gen :{G=fp}pilarum electricarum +STR_CARGO_PLURAL_BATTERIES.acc :{G=fp}Pilas Electricas +STR_CARGO_PLURAL_BATTERIES.dat :{G=fp}Pilis Electricis +STR_CARGO_PLURAL_PLASTIC :{G=f}Plastica +STR_CARGO_PLURAL_PLASTIC.gen :{G=f}plasticae +STR_CARGO_PLURAL_PLASTIC.acc :{G=f}Plasticam +STR_CARGO_PLURAL_PLASTIC.dat :{G=f}Plasticae +STR_CARGO_PLURAL_FIZZY_DRINKS :{G=fp}Potiones Carbonatae +STR_CARGO_PLURAL_FIZZY_DRINKS.gen :{G=fp}potionum carbonatarum +STR_CARGO_PLURAL_FIZZY_DRINKS.acc :{G=fp}Potiones Carbonatas +STR_CARGO_PLURAL_FIZZY_DRINKS.dat :{G=fp}Potionibus Carbonatis + +# Singular cargo name +STR_CARGO_SINGULAR_NOTHING : +STR_CARGO_SINGULAR_PASSENGER :{G=mp}Vectores +STR_CARGO_SINGULAR_PASSENGER.gen :{G=mp}vectorum +STR_CARGO_SINGULAR_PASSENGER.acc :{G=mp}Vectores +STR_CARGO_SINGULAR_PASSENGER.dat :{G=mp}Vectoribus +STR_CARGO_SINGULAR_COAL :{G=m}Carbo +STR_CARGO_SINGULAR_COAL.gen :{G=m}carbonis +STR_CARGO_SINGULAR_COAL.acc :{G=m}Carbonem +STR_CARGO_SINGULAR_COAL.dat :{G=m}Carboni +STR_CARGO_SINGULAR_MAIL :{G=fp}Epistulae +STR_CARGO_SINGULAR_MAIL.gen :{G=fp}epistularum +STR_CARGO_SINGULAR_MAIL.acc :{G=fp}Epistulas +STR_CARGO_SINGULAR_MAIL.dat :{G=fp}Epistulis +STR_CARGO_SINGULAR_OIL :{G=n}Petroleum +STR_CARGO_SINGULAR_OIL.gen :{G=n}petrolei +STR_CARGO_SINGULAR_OIL.acc :{G=n}Petroleum +STR_CARGO_SINGULAR_OIL.dat :{G=n}Petroleo +STR_CARGO_SINGULAR_LIVESTOCK :{G=np}Pecora +STR_CARGO_SINGULAR_LIVESTOCK.gen :{G=np}pecorum +STR_CARGO_SINGULAR_LIVESTOCK.acc :{G=np}Pecora +STR_CARGO_SINGULAR_LIVESTOCK.dat :{G=np}Pecoribus +STR_CARGO_SINGULAR_GOODS :{G=fp}Merces +STR_CARGO_SINGULAR_GOODS.gen :{G=fp}mercium +STR_CARGO_SINGULAR_GOODS.acc :{G=fp}Merces +STR_CARGO_SINGULAR_GOODS.dat :{G=fp}Mercibus +STR_CARGO_SINGULAR_GRAIN :{G=n}Frumentum +STR_CARGO_SINGULAR_GRAIN.gen :{G=n}frumenti +STR_CARGO_SINGULAR_GRAIN.acc :{G=n}Frumentum +STR_CARGO_SINGULAR_GRAIN.dat :{G=n}Frumento +STR_CARGO_SINGULAR_WOOD :{G=n}Lignum +STR_CARGO_SINGULAR_WOOD.gen :{G=n}ligni +STR_CARGO_SINGULAR_WOOD.acc :{G=n}Lignum +STR_CARGO_SINGULAR_WOOD.dat :{G=n}Ligno +STR_CARGO_SINGULAR_IRON_ORE :{G=n}Ferrum +STR_CARGO_SINGULAR_IRON_ORE.gen :{G=n}ferri +STR_CARGO_SINGULAR_IRON_ORE.acc :{G=n}Ferrum +STR_CARGO_SINGULAR_IRON_ORE.dat :{G=n}Ferro +STR_CARGO_SINGULAR_STEEL :{G=m}Chalybs +STR_CARGO_SINGULAR_STEEL.gen :{G=m}chalybis +STR_CARGO_SINGULAR_STEEL.acc :{G=m}Chalybem +STR_CARGO_SINGULAR_STEEL.dat :{G=m}Chalybi +STR_CARGO_SINGULAR_VALUABLES :{G=fp}Res Pretiosa +STR_CARGO_SINGULAR_VALUABLES.gen :{G=fp}rerum pretiosarum +STR_CARGO_SINGULAR_VALUABLES.acc :{G=fp}Res Pretiosas +STR_CARGO_SINGULAR_VALUABLES.dat :{G=fp}Rebus Pretiosis +STR_CARGO_SINGULAR_COPPER_ORE :{G=n}Aes +STR_CARGO_SINGULAR_COPPER_ORE.gen :{G=n}aeris +STR_CARGO_SINGULAR_COPPER_ORE.acc :{G=n}Aes +STR_CARGO_SINGULAR_COPPER_ORE.dat :{G=n}Aeri +STR_CARGO_SINGULAR_MAIZE :{G=n}Maizium +STR_CARGO_SINGULAR_MAIZE.gen :{G=n}maizii +STR_CARGO_SINGULAR_MAIZE.acc :{G=n}Maizium +STR_CARGO_SINGULAR_MAIZE.dat :{G=n}Maizio +STR_CARGO_SINGULAR_FRUIT :{G=mp}Fructus +STR_CARGO_SINGULAR_FRUIT.gen :{G=mp}fructuum +STR_CARGO_SINGULAR_FRUIT.acc :{G=mp}Fructus +STR_CARGO_SINGULAR_FRUIT.dat :{G=mp}Fructibus +STR_CARGO_SINGULAR_DIAMOND :{G=mp}Adamantes +STR_CARGO_SINGULAR_DIAMOND.gen :{G=mp}adamantum +STR_CARGO_SINGULAR_DIAMOND.acc :{G=mp}Adamantes +STR_CARGO_SINGULAR_DIAMOND.dat :{G=mp}Adamantibus +STR_CARGO_SINGULAR_FOOD :{G=m}Cibus +STR_CARGO_SINGULAR_FOOD.gen :{G=m}cibi +STR_CARGO_SINGULAR_FOOD.acc :{G=m}Cibum +STR_CARGO_SINGULAR_FOOD.dat :{G=m}Cibo +STR_CARGO_SINGULAR_PAPER :{G=f}Charta +STR_CARGO_SINGULAR_PAPER.gen :{G=f}chartae +STR_CARGO_SINGULAR_PAPER.acc :{G=f}Chartam +STR_CARGO_SINGULAR_PAPER.dat :{G=f}Chartae +STR_CARGO_SINGULAR_GOLD :{G=n}Aurum +STR_CARGO_SINGULAR_GOLD.gen :{G=n}auri +STR_CARGO_SINGULAR_GOLD.acc :{G=n}Aurum +STR_CARGO_SINGULAR_GOLD.dat :{G=n}Auro +STR_CARGO_SINGULAR_WATER :{G=f}Aqua +STR_CARGO_SINGULAR_WATER.gen :{G=f}aquae +STR_CARGO_SINGULAR_WATER.acc :{G=f}Aquam +STR_CARGO_SINGULAR_WATER.dat :{G=f}Aquae +STR_CARGO_SINGULAR_WHEAT :{G=n}Triticum +STR_CARGO_SINGULAR_WHEAT.gen :{G=n}tritici +STR_CARGO_SINGULAR_WHEAT.acc :{G=n}Triticum +STR_CARGO_SINGULAR_WHEAT.dat :{G=n}Tritico +STR_CARGO_SINGULAR_RUBBER :{G=f}Gummis +STR_CARGO_SINGULAR_RUBBER.gen :{G=f}gummis +STR_CARGO_SINGULAR_RUBBER.acc :{G=f}Gummem +STR_CARGO_SINGULAR_RUBBER.dat :{G=f}Gummi +STR_CARGO_SINGULAR_SUGAR :{G=n}Saccharum +STR_CARGO_SINGULAR_SUGAR.gen :{G=n}sacchari +STR_CARGO_SINGULAR_SUGAR.acc :{G=n}Saccharum +STR_CARGO_SINGULAR_SUGAR.dat :{G=n}Saccharo +STR_CARGO_SINGULAR_TOY :{G=np}Ludicra +STR_CARGO_SINGULAR_TOY.gen :{G=np}ludicrorum +STR_CARGO_SINGULAR_TOY.acc :{G=np}Ludicra +STR_CARGO_SINGULAR_TOY.dat :{G=np}Ludicris +STR_CARGO_SINGULAR_CANDY :{G=np}Bellaria +STR_CARGO_SINGULAR_CANDY.gen :{G=np}bellariorum +STR_CARGO_SINGULAR_CANDY.acc :{G=np}Bellaria +STR_CARGO_SINGULAR_CANDY.dat :{G=np}Bellariis +STR_CARGO_SINGULAR_COLA :{G=f}Cola +STR_CARGO_SINGULAR_COLA.gen :{G=f}colae +STR_CARGO_SINGULAR_COLA.acc :{G=f}Colam +STR_CARGO_SINGULAR_COLA.dat :{G=f}Colae +STR_CARGO_SINGULAR_COTTON_CANDY :{G=n}Sacchari Xylinum +STR_CARGO_SINGULAR_COTTON_CANDY.gen :{G=n}sacchari xylini +STR_CARGO_SINGULAR_COTTON_CANDY.acc :{G=n}Sacchari Xylinum +STR_CARGO_SINGULAR_COTTON_CANDY.dat :{G=n}Sacchari Xylino +STR_CARGO_SINGULAR_BUBBLE :{G=fp}Bullae +STR_CARGO_SINGULAR_BUBBLE.gen :{G=fp}bullarum +STR_CARGO_SINGULAR_BUBBLE.acc :{G=fp}Bullas +STR_CARGO_SINGULAR_BUBBLE.dat :{G=fp}Bullis +STR_CARGO_SINGULAR_TOFFEE :{G=n}Saccharum Tostum +STR_CARGO_SINGULAR_TOFFEE.gen :{G=n}sacchari tosti +STR_CARGO_SINGULAR_TOFFEE.acc :{G=n}Saccharum Tostum +STR_CARGO_SINGULAR_TOFFEE.dat :{G=n}Saccharo Tosto +STR_CARGO_SINGULAR_BATTERY :{G=fp}Pilae Electricae +STR_CARGO_SINGULAR_BATTERY.gen :{G=fp}pilarum electricarum +STR_CARGO_SINGULAR_BATTERY.acc :{G=fp}Pilas Electricas +STR_CARGO_SINGULAR_BATTERY.dat :{G=fp}Pilis Electricis +STR_CARGO_SINGULAR_PLASTIC :{G=f}Plastica +STR_CARGO_SINGULAR_PLASTIC.gen :{G=f}plasticae +STR_CARGO_SINGULAR_PLASTIC.acc :{G=f}Plasticam +STR_CARGO_SINGULAR_PLASTIC.dat :{G=f}Plasticae +STR_CARGO_SINGULAR_FIZZY_DRINK :{G=fp}Potiones Carbonatae +STR_CARGO_SINGULAR_FIZZY_DRINK.gen :{G=fp}potionum carbonatarum +STR_CARGO_SINGULAR_FIZZY_DRINK.acc :{G=fp}Potiones Carbonatas +STR_CARGO_SINGULAR_FIZZY_DRINK.dat :{G=fp}Potionibus Carbonatis + +# Quantity of cargo +STR_QUANTITY_NOTHING : +STR_QUANTITY_PASSENGERS :{G=mp}{COMMA}{NBSP}vector{P "" es} +STR_QUANTITY_COAL :{WEIGHT_LONG} carbonis +STR_QUANTITY_MAIL :{G=mp}{COMMA}{NBSP}sacc{P us i} epistularum +STR_QUANTITY_OIL :{VOLUME_LONG} petrolei +STR_QUANTITY_LIVESTOCK :{G=np}{COMMA}{NBSP}pec{P us ora} +STR_QUANTITY_GOODS :{G=fp}{COMMA}{NBSP}capsa{P "" e} mercium +STR_QUANTITY_GRAIN :{WEIGHT_LONG} frumenti +STR_QUANTITY_WOOD :{WEIGHT_LONG} ligni +STR_QUANTITY_IRON_ORE :{WEIGHT_LONG} ferri +STR_QUANTITY_STEEL :{WEIGHT_LONG} chalybis +STR_QUANTITY_VALUABLES :{G=mp}{COMMA}{NBSP}sacc{P us i} rerum pretiosarum +STR_QUANTITY_COPPER_ORE :{WEIGHT_LONG} aeris +STR_QUANTITY_MAIZE :{WEIGHT_LONG} maizii +STR_QUANTITY_FRUIT :{WEIGHT_LONG} fructuum +STR_QUANTITY_DIAMONDS :{G=mp}{COMMA}{NBSP}sacc{P us i} adamantum +STR_QUANTITY_FOOD :{WEIGHT_LONG} cibi +STR_QUANTITY_PAPER :{WEIGHT_LONG} chartae +STR_QUANTITY_GOLD :{G=mp}{COMMA}{NBSP}sacc{P us i} auri +STR_QUANTITY_WATER :{VOLUME_LONG} aquae +STR_QUANTITY_WHEAT :{WEIGHT_LONG} tritici +STR_QUANTITY_RUBBER :{VOLUME_LONG} gummis +STR_QUANTITY_SUGAR :{WEIGHT_LONG} sacchari +STR_QUANTITY_TOYS :{G=np}{COMMA}{NBSP}ludicr{P um a} +STR_QUANTITY_SWEETS :{G=mp}{COMMA}{NBSP}sacc{P us i} bellarii +STR_QUANTITY_COLA :{VOLUME_LONG} colae +STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} sacchari xylini +STR_QUANTITY_BUBBLES :{G=fp}{COMMA}{NBSP}bulla{P "" e} +STR_QUANTITY_TOFFEE :{WEIGHT_LONG} sacchari tosti +STR_QUANTITY_BATTERIES :{G=fp}{COMMA}{NBSP}pila{P "" e} electrica{P "" e} +STR_QUANTITY_PLASTIC :{VOLUME_LONG} plasticae +STR_QUANTITY_FIZZY_DRINKS :{G=fp}{COMMA}{NBSP}potio{P "" nes} carbonata{P "" e} +STR_QUANTITY_N_A :N/A + +# Two letter abbreviation of cargo name +STR_ABBREV_NOTHING : +STR_ABBREV_PASSENGERS :{TINY_FONT}VC +STR_ABBREV_COAL :{TINY_FONT}CA +STR_ABBREV_MAIL :{TINY_FONT}EP +STR_ABBREV_OIL :{TINY_FONT}OL +STR_ABBREV_LIVESTOCK :{TINY_FONT}PC +STR_ABBREV_GOODS :{TINY_FONT}ME +STR_ABBREV_GRAIN :{TINY_FONT}FR +STR_ABBREV_WOOD :{TINY_FONT}LI +STR_ABBREV_IRON_ORE :{TINY_FONT}FE +STR_ABBREV_STEEL :{TINY_FONT}CH +STR_ABBREV_VALUABLES :{TINY_FONT}RP +STR_ABBREV_COPPER_ORE :{TINY_FONT}AE +STR_ABBREV_MAIZE :{TINY_FONT}MZ +STR_ABBREV_FRUIT :{TINY_FONT}FT +STR_ABBREV_DIAMONDS :{TINY_FONT}AD +STR_ABBREV_FOOD :{TINY_FONT}AL +STR_ABBREV_PAPER :{TINY_FONT}CA +STR_ABBREV_GOLD :{TINY_FONT}AU +STR_ABBREV_WATER :{TINY_FONT}AQ +STR_ABBREV_WHEAT :{TINY_FONT}TR +STR_ABBREV_RUBBER :{TINY_FONT}GU +STR_ABBREV_SUGAR :{TINY_FONT}SC +STR_ABBREV_TOYS :{TINY_FONT}LD +STR_ABBREV_SWEETS :{TINY_FONT}BL +STR_ABBREV_COLA :{TINY_FONT}CL +STR_ABBREV_CANDYFLOSS :{TINY_FONT}SX +STR_ABBREV_BUBBLES :{TINY_FONT}BU +STR_ABBREV_TOFFEE :{TINY_FONT}ST +STR_ABBREV_BATTERIES :{TINY_FONT}PE +STR_ABBREV_PLASTIC :{TINY_FONT}PL +STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}PC +STR_ABBREV_NONE :{TINY_FONT}NO +STR_ABBREV_ALL :{TINY_FONT}OMN + +# 'Mode' of transport for cargoes +STR_PASSENGERS :{G=mp}{COMMA}{NBSP}vector{P "" es} +STR_BAGS :{G=mp}{COMMA}{NBSP}sacc{P us i} +STR_TONS :{G=fp}{COMMA}{NBSP}tonna{P "" e} +STR_LITERS :{G=np}{COMMA}{NBSP}litr{P um a} +STR_ITEMS :{G=fp}{COMMA}{NBSP}res +STR_CRATES :{G=fp}{COMMA}{NBSP}caps{P "" e} + +# Colours, do not shuffle +STR_COLOUR_DARK_BLUE :Caeruleus Berolinensis +STR_COLOUR_PALE_GREEN :Viridis Pallidus +STR_COLOUR_PINK :Roseus +STR_COLOUR_YELLOW :Gilvus +STR_COLOUR_RED :Ruber +STR_COLOUR_LIGHT_BLUE :Caeruleus Candidus +STR_COLOUR_GREEN :Viridis +STR_COLOUR_DARK_GREEN :Viridis Obscurus +STR_COLOUR_BLUE :Caeruleus +STR_COLOUR_CREAM :Ravus +STR_COLOUR_MAUVE :Malva +STR_COLOUR_PURPLE :Purpureus +STR_COLOUR_ORANGE :Fulvus +STR_COLOUR_BROWN :Aquilus +STR_COLOUR_GREY :Canus +STR_COLOUR_WHITE :Albus + +# Units used in OpenTTD +STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph +STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h +STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s + +STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp +STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp +STR_UNITS_POWER_SI :{COMMA}{NBSP}kW + +STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}{NBSP}t +STR_UNITS_WEIGHT_SHORT_SI :{COMMA}{NBSP}kg + +STR_UNITS_WEIGHT_LONG_IMPERIAL :{G=fp}{COMMA}{NBSP}tona{P "" e} +STR_UNITS_WEIGHT_LONG_METRIC :{G=fp}{COMMA}{NBSP}tonna{P "" e} +STR_UNITS_WEIGHT_LONG_SI :{G=np}{COMMA}{NBSP}chiliogramma{P "" ta} + +STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}gal +STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l +STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ + +STR_UNITS_VOLUME_LONG_IMPERIAL :{G=mp}{COMMA}{NBSP}congi{P us i} +STR_UNITS_VOLUME_LONG_METRIC :{G=np}{COMMA}{NBSP}litr{P um a} +STR_UNITS_VOLUME_LONG_SI :{G=np}{COMMA}{NBSP}m³ + +STR_UNITS_FORCE_IMPERIAL :{COMMA}{NBSP}lbf +STR_UNITS_FORCE_METRIC :{COMMA}{NBSP}kgf +STR_UNITS_FORCE_SI :{COMMA}{NBSP}kN + +STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}pedes +STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m +STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m + +# Common window strings +STR_LIST_FILTER_TITLE :{BLACK}Series colans: +STR_LIST_FILTER_OSKTITLE :{BLACK}Inscribe seriem colantem +STR_LIST_FILTER_TOOLTIP :{BLACK}Inscribe verbum ad indicem colandam + +STR_TOOLTIP_GROUP_ORDER :{BLACK}Eligere ordinem gregum +STR_TOOLTIP_SORT_ORDER :{BLACK}Eligere ordinem separandi (descendens/ascendens) +STR_TOOLTIP_SORT_CRITERIA :{BLACK}Eligere criteria separandi +STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Eligere criteria colandi +STR_BUTTON_SORT_BY :{BLACK}Ordinare +STR_BUTTON_LOCATION :{BLACK}Locus +STR_BUTTON_RENAME :{BLACK}Renominare + +STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Claudere fenestram +STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titulus fenestrae - hunc trahe ut fenestra moveatur +STR_TOOLTIP_SHADE :{BLACK}Subvolvere fenestram - titulum modo monstrare +STR_TOOLTIP_DEBUG :{BLACK}Monstrare indicia NewGRF emendandi +STR_TOOLTIP_DEFSIZE :{BLACK}Refingere fenestram ad magnitudinem solitam. Ctrl+Preme ut magnitudo praesens solito servetur +STR_TOOLTIP_STICKY :{BLACK}Signare hanc fenestram 'glutinosam' esse; non clausum iri clave 'Omnes Fenestras Claudere' pressa. Ctrl+Preme ut modus praesens solito servetur +STR_TOOLTIP_RESIZE :{BLACK}Preme traheque ut fenestra refingatur +STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Intermutare magnitudinem fenestrae magnae parvaeve +STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Ansa vagationis - indicem sursum deorsumve movet +STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Ansa vagationis - indicem ad sinistram dextramve movet +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Destruere aedificia etc. quae in terrae quadro sunt. Ctrl diagonaliter eligit. Shift mutat inter detructionem et aestimationem monstrandam + +# Show engines button +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Monstrare celata +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Monstrare celata +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Monstrare celatas +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Monstrare celata + +STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Electa, vehicula ferriviaria celata etiam monstrantur +STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Electa, vehicula viaria celata etiam monstrantur +STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Electa, naves celatae etiam monstrantur +STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Electa, aeroplana celata etiam monstrantur + +# Query window +STR_BUTTON_DEFAULT :{BLACK}Solitum +STR_BUTTON_CANCEL :{BLACK}Cancellare +STR_BUTTON_OK :{BLACK}Confirmare + +# On screen keyboard window +STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . +STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|QWERTYUIOP{{}}ASDFGHJKL:" ZXCVBNM<>? . + +# Measurement tooltip +STR_MEASURE_LENGTH :{BLACK}Spatium: {NUM} +STR_MEASURE_AREA :{BLACK}Area: {NUM} x {NUM} +STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Spatium: {NUM}{}Differentia altitudinis: {HEIGHT} +STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {NUM} x {NUM}{}Differentia altitudinis: {HEIGHT} + + +# These are used in buttons +STR_SORT_BY_CAPTION_NAME :{BLACK}Nomen +STR_SORT_BY_CAPTION_DATE :{BLACK}Dies +# These are used in dropdowns +STR_SORT_BY_NAME :Nomine +STR_SORT_BY_PRODUCTION :Productione +STR_SORT_BY_TYPE :Typo +STR_SORT_BY_TRANSPORTED :Quantitate Translata +STR_SORT_BY_NUMBER :Numero +STR_SORT_BY_PROFIT_LAST_YEAR :Lucro prioris anni +STR_SORT_BY_PROFIT_THIS_YEAR :Lucro huius anni +STR_SORT_BY_AGE :Aetate +STR_SORT_BY_RELIABILITY :Constantia +STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Summa capacitatis per genera onerum +STR_SORT_BY_MAX_SPEED :Velocitate maxima +STR_SORT_BY_MODEL :Typo +STR_SORT_BY_VALUE :Aestimatione +STR_SORT_BY_LENGTH :Longitudine +STR_SORT_BY_LIFE_TIME :Aetate reliqua +STR_SORT_BY_TIMETABLE_DELAY :Mora horarii +STR_SORT_BY_FACILITY :Typo stationis +STR_SORT_BY_WAITING_TOTAL :Summa onerum manentium +STR_SORT_BY_WAITING_AVAILABLE :Onere manente parabile +STR_SORT_BY_RATING_MAX :Censione oneris maxima +STR_SORT_BY_RATING_MIN :Censione oneris minima +STR_SORT_BY_ENGINE_ID :Agnoscamento vehiculi (separatio antiqua) +STR_SORT_BY_COST :Pretio +STR_SORT_BY_POWER :Potestate +STR_SORT_BY_TRACTIVE_EFFORT :Vi tractionis +STR_SORT_BY_INTRO_DATE :Die introductionis +STR_SORT_BY_RUNNING_COST :Pretio operandi +STR_SORT_BY_POWER_VS_RUNNING_COST :Potestate pretio operandi divisa +STR_SORT_BY_CARGO_CAPACITY :Capacitate oneris +STR_SORT_BY_RANGE :Distantia volatus maxima +STR_SORT_BY_POPULATION :Numero Incolarum +STR_SORT_BY_RATING :Censione + +# Tooltips for the main toolbar +STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Ludum intermittere +STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Ludum adcelerare +STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Optiones +STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Servare ludum, relinquere ludum, exire +STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Monstrare tabulam geographicam, fenestram conspectus additiciam, sive indicem signorum +STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Monstrare indicem oppidorum +STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Monstrare subsidia +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Monstrare indicem stationum societatis +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Monstrare res fiscales societatis +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Monstrare facta generalia societatis +STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Monstrare librum fabularum +STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Monstrare indicem metarum +STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Monstrare formulas graphicas +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Monstrare album foederis societatum +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Industriam novam condere vel monstrare indicem industriarum +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Monstrare indicem hamaxostichorum societatis. Ctrl+Preme ut mutetur ad indicem sine gregibus +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Monstrare indicem vehiculorum viariorum societatis. Ctrl+Preme ut mutetur ad indicem sine gregibus +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Monstrare indicem navium societatis. Ctrl+Preme ut mutetur ad indicem sine gregibus +STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Monstrare indicem aeroplanorum societatis. Ctrl+Preme ut mutetur ad indicem sine gregibus +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Amplificare conspectum +STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Retrahere conspectum +STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Struere ferrivias +STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Struere vias +STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Struere navalia +STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Struere aeroportus +STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Monstrare terrae arcam ferramentorum qua potes terram augere/minuere, arbores serere, etc. +STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Monstrare fenestram soni musicaeque +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Monstrare nuntium novissimum sive optiones nuntii +STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Indicia terrae regionis, consola, emendatio scripti, imagines conspectus, de OpenTTD +STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Mutare inter arcas ferramentorum + +# Extra tooltips for the scenario editor toolbar +STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Servare scaenarium, legere scaenarium, relinquere scriptorium scaenarii, exire +STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD +STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Scriptorium Scaenarii +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Facit ut dies initii uno anno procedatur +STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Facit ut dies initii uno anno recedatur +STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Mutare diem initii +STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Monstrare tabulam geographicam vel indicem oppidorum +STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Plasmatio terrae +STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Conditus oppidorum +STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Conditus industriarum +STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Constructio viarum +STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Serere arbores. Shift mutat inter constructionem et aestimationem monstrandam +STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Ponere signum +STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Ponere ornamentum. Shift mutat inter constructionem et aestimationem monstrandam + +############ range for SE file menu starts +STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Servare scaenarium +STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Legere scaenarium +STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Servare tabulam altitudinum +STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Legere tabulam altitudinum +STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Relinquere scriptorium scaenarii +STR_SCENEDIT_FILE_MENU_SEPARATOR : +STR_SCENEDIT_FILE_MENU_QUIT :Exire +############ range for SE file menu starts + +############ range for settings menu starts +STR_SETTINGS_MENU_GAME_OPTIONS :Ludi optiones +STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Electiones +STR_SETTINGS_MENU_SCRIPT_SETTINGS :Optiones IA/Ludi scriptorum +STR_SETTINGS_MENU_NEWGRF_SETTINGS :Optiones NewGRF +STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Optiones perluciditatis +STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Nomina oppidorum spectabilia +STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Nomina stationum spectabilia +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Nomina interlocorum spectabilia +STR_SETTINGS_MENU_SIGNS_DISPLAYED :Signa spectabilia +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Signa nominaque competitorum spectabilia +STR_SETTINGS_MENU_FULL_ANIMATION :Animatio completa +STR_SETTINGS_MENU_FULL_DETAIL :Descriptio completa +STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Aedificia perlucida +STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Signa perlucida +############ range ends here + +############ range for file menu starts +STR_FILE_MENU_SAVE_GAME :Servare ludum +STR_FILE_MENU_LOAD_GAME :Legere ludum +STR_FILE_MENU_QUIT_GAME :Relinquere ludum +STR_FILE_MENU_SEPARATOR : +STR_FILE_MENU_EXIT :Exire +############ range ends here + +# map menu +STR_MAP_MENU_MAP_OF_WORLD :Orbis tabula +STR_MAP_MENU_EXTRA_VIEW_PORT :Fenestra conspectus additicia +STR_MAP_MENU_LINGRAPH_LEGEND :Formula graphica onerum cursus +STR_MAP_MENU_SIGN_LIST :Index signorum + +############ range for town menu starts +STR_TOWN_MENU_TOWN_DIRECTORY :Index oppidorum +STR_TOWN_MENU_FOUND_TOWN :Condere oppidum +############ range ends here + +############ range for subsidies menu starts +STR_SUBSIDIES_MENU_SUBSIDIES :Subsidia +############ range ends here + +############ range for graph menu starts +STR_GRAPH_MENU_OPERATING_PROFIT_GRAPH :Formula lucri operationis graphica +STR_GRAPH_MENU_INCOME_GRAPH :Formula reditus graphica +STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Formula oneris traditi graphica +STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :Formula historiae effectus graphica +STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :Formula aestimationis societatis graphica +STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Tabula mercedum onerum +############ range ends here + +############ range for company league menu starts +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Album foederis societatum +STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Censio effectus descripta +STR_GRAPH_MENU_HIGHSCORE :Album punctorum supremorum +############ range ends here + +############ range for industry menu starts +STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Index industriarum +STR_INDUSTRY_MENU_INDUSTRY_CHAIN :Catenae industriarum +STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Condere novam industriam +############ range ends here + +############ range for railway construction menu starts +STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Constructio ferriviarum +STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Constructio electricarum ferriviarum +STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Constructio monoorbitarum +STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Constructio maglev +############ range ends here + +############ range for road construction menu starts +STR_ROAD_MENU_ROAD_CONSTRUCTION :Constructio viarum +STR_ROAD_MENU_TRAM_CONSTRUCTION :Constructio ferriviarum stratarium +############ range ends here + +############ range for waterways construction menu starts +STR_WATERWAYS_MENU_WATERWAYS_CONSTRUCTION :Constructio viarum aquariarum +############ range ends here + +############ range for airport construction menu starts +STR_AIRCRAFT_MENU_AIRPORT_CONSTRUCTION :Constructio aeroportuum +############ range ends here + +############ range for landscaping menu starts +STR_LANDSCAPING_MENU_LANDSCAPING :Plasmatio terrae +STR_LANDSCAPING_MENU_PLANT_TREES :Serere arbores +STR_LANDSCAPING_MENU_PLACE_SIGN :Ponere signum +############ range ends here + +############ range for music menu starts +STR_TOOLBAR_SOUND_MUSIC :Sonus musicave +############ range ends here + +############ range for message menu starts +STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Monstrare nuntium novissimum +STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historia nuntiorum +############ range ends here + +############ range for about menu starts +STR_ABOUT_MENU_LAND_BLOCK_INFO :Terrae regionis indicia +STR_ABOUT_MENU_SEPARATOR : +STR_ABOUT_MENU_TOGGLE_CONSOLE :Monstrare celareve consolam +STR_ABOUT_MENU_AI_DEBUG :Emendatio IA/Ludi scriptorum +STR_ABOUT_MENU_SCREENSHOT :Imago conspectus +STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Imago conspectus maxime amplificata +STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Imago conspectus solite amplificata +STR_ABOUT_MENU_GIANT_SCREENSHOT :Imago cunctae tabulae geographicae +STR_ABOUT_MENU_ABOUT_OPENTTD :De 'OpenTTD' +STR_ABOUT_MENU_SPRITE_ALIGNER :Norma spiritus +STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Monstrare celareve arcas finitionum +STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Incipere desinereve pictura sordidorum laterculorum +############ range ends here + +############ range for ordinal numbers used for the place in the highscore window +STR_ORDINAL_NUMBER_1ST :Primum +STR_ORDINAL_NUMBER_2ND :Secundum +STR_ORDINAL_NUMBER_3RD :Tertium +STR_ORDINAL_NUMBER_4TH :Quartum +STR_ORDINAL_NUMBER_5TH :Quintum +STR_ORDINAL_NUMBER_6TH :Sextum +STR_ORDINAL_NUMBER_7TH :Septimum +STR_ORDINAL_NUMBER_8TH :Octavum +STR_ORDINAL_NUMBER_9TH :Nonum +STR_ORDINAL_NUMBER_10TH :Decimum +STR_ORDINAL_NUMBER_11TH :Undecimum +STR_ORDINAL_NUMBER_12TH :Duodecimum +STR_ORDINAL_NUMBER_13TH :Tertium Decimum +STR_ORDINAL_NUMBER_14TH :Quartum Decimum +STR_ORDINAL_NUMBER_15TH :Quintum Decimum +############ range for ordinal numbers ends + +############ range for days starts +STR_DAY_NUMBER_1ST :I +STR_DAY_NUMBER_2ND :II +STR_DAY_NUMBER_3RD :III +STR_DAY_NUMBER_4TH :IV +STR_DAY_NUMBER_5TH :V +STR_DAY_NUMBER_6TH :VI +STR_DAY_NUMBER_7TH :VII +STR_DAY_NUMBER_8TH :VIII +STR_DAY_NUMBER_9TH :IX +STR_DAY_NUMBER_10TH :X +STR_DAY_NUMBER_11TH :XI +STR_DAY_NUMBER_12TH :XII +STR_DAY_NUMBER_13TH :XIII +STR_DAY_NUMBER_14TH :XIV +STR_DAY_NUMBER_15TH :XV +STR_DAY_NUMBER_16TH :XVI +STR_DAY_NUMBER_17TH :XVII +STR_DAY_NUMBER_18TH :XVIII +STR_DAY_NUMBER_19TH :XIX +STR_DAY_NUMBER_20TH :XX +STR_DAY_NUMBER_21ST :XXI +STR_DAY_NUMBER_22ND :XXII +STR_DAY_NUMBER_23RD :XXIII +STR_DAY_NUMBER_24TH :XXIV +STR_DAY_NUMBER_25TH :XXV +STR_DAY_NUMBER_26TH :XXVI +STR_DAY_NUMBER_27TH :XXVII +STR_DAY_NUMBER_28TH :XXVIII +STR_DAY_NUMBER_29TH :XXIX +STR_DAY_NUMBER_30TH :XXX +STR_DAY_NUMBER_31ST :XXXI +############ range for days ends + +############ range for months starts +STR_MONTH_ABBREV_JAN :Ian +STR_MONTH_ABBREV_FEB :Feb +STR_MONTH_ABBREV_MAR :Mar +STR_MONTH_ABBREV_APR :Apr +STR_MONTH_ABBREV_MAY :Mai +STR_MONTH_ABBREV_JUN :Iun +STR_MONTH_ABBREV_JUL :Iul +STR_MONTH_ABBREV_AUG :Aug +STR_MONTH_ABBREV_SEP :Sep +STR_MONTH_ABBREV_OCT :Oct +STR_MONTH_ABBREV_NOV :Nov +STR_MONTH_ABBREV_DEC :Dec + +STR_MONTH_JAN :Ianuarii +STR_MONTH_FEB :Februarii +STR_MONTH_MAR :Martii +STR_MONTH_APR :Aprilis +STR_MONTH_MAY :Maii +STR_MONTH_JUN :Iunii +STR_MONTH_JUL :Iulii +STR_MONTH_AUG :Augusti +STR_MONTH_SEP :Septembris +STR_MONTH_OCT :Octobris +STR_MONTH_NOV :Novembris +STR_MONTH_DEC :Decembris +############ range for months ends + +# Graph window +STR_GRAPH_KEY_BUTTON :{BLACK}Clavis +STR_GRAPH_KEY_TOOLTIP :{BLACK}Monstrare formularum clavem +STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING} +STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM} +STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING} +STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA} + +STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Formula Lucri Operationis Graphica +STR_GRAPH_INCOME_CAPTION :{WHITE}Formula Reditus Graphica +STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unitates oneris traditae +STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Censiones effectus societatis (Censio maxima = 1000) +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Aestimationes societatis + +STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Mercedes Onerum +STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Dies in itinere +STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINY_FONT}{BLACK}Merces tradendi 10 oneris unitates (aut 10,000 litra) per 20 quadra +STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLACK}Omnia Monstrare +STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Omnia Celare +STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Monstrare omnia onera in grapho mercedum onerum +STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Monstrare nulla onera in grapho mercedum onerum +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Monstrare celareve aspectum huius oneris in grapho +STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} + +STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Monstrare censiones effectus descriptas + +# Graph key window +STR_GRAPH_KEY_CAPTION :{WHITE}Clavis graphicarum societatum +STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Preme ut conspectum huius societatis in grapho monstretur celeturve + +# Company league window +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Album Foederis Societatum +STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Mechanicus +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Curator Commercii +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Procurator Vecturae +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Praepositus Itineris +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Rector +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Moderator +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Princeps +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Praeses +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Dives Maximus + +# Performance detail window +STR_PERFORMANCE_DETAIL :{WHITE}Censio effectus descripta +STR_PERFORMANCE_DETAIL_KEY :{BLACK}Descriptio +STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRENCY_SHORT}/{CURRENCY_SHORT}) +STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}/{COMMA}) +STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}% +STR_PERFORMANCE_DETAIL_SELECT_COMPANY_TOOLTIP :{BLACK}Videre descriptionem de hac societate +############ Those following lines need to be in this order!! +STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vehicula: +STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stationes: +STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Lucrum minimum: +STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Reditus minimus: +STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Reditus maximus: +STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Tradita: +STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Onera: +STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Pecunia: +STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Creditum: +STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Omnia: +############ End of order list +STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Numerus vehiculorum quae lucrum fecerunt anno priore. Vehicula viaria, hamaxostichi, naves, et aeroplana numerantur +STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Numerus stationum nuper adventorum. Stationes ferriviariae laophoricaeque, et aeroportus, et cetera numerantur separatim etsi in eadem statione sunt +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Lucrum vehiculi quod minimum lucrum habet (modo vehicula plures quam duos annos in aetate) +STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Copia pecuniae merita in quadrante cum minimo lucro ex 12 quadrantibus prioribus +STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Copia pecuniae merita in quadrante cum maximo lucro ex 12 quadrantibus prioribus +STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unitates oneris traditae quattuor quadrantibus prioribus +STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Numerus typorum oneris traditorum quadrante priore +STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Pecunia huius societatis +STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Copia crediti huius societatis +STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Puncta tota ex punctis maximis + +# Music window +STR_MUSIC_JAZZ_JUKEBOX_CAPTION :{WHITE}'Jazz Jukebox' +STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLACK}Omnes +STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Vetus +STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Novitas +STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Via Facilis +STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Propria I +STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Propria II +STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Amplitudo Musicae +STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Amplitido Sonorum +STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN +STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX +STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}' +STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- +STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} +STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ +STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" +STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Carmen +STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titulus +STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Miscere +STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Programma +STR_MUSIC_TOOLTIP_SKIP_TO_PREVIOUS_TRACK :{BLACK}Recedere carmini priori +STR_MUSIC_TOOLTIP_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Procedere carmini secundo +STR_MUSIC_TOOLTIP_STOP_PLAYING_MUSIC :{BLACK}Desinere musicae +STR_MUSIC_TOOLTIP_START_PLAYING_MUSIC :{BLACK}Incipere musicae +STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Trahe ut amplitudines musicae sonorumque mutentur +STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Eligere compositionem 'omnia carmina' +STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Eligere compositionem 'musicam veterem' +STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Eligere compositionem 'musicam novitatis' +STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Eligere compositionem 'viam facilem' +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Eligere compositionem 'Propriam I' (a lusore electam) +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Eligere compositionem 'Propriam II' (a lusore electam) +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Incipere desinereve admixtionem carminum +STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Monstrare fenestram electionis carminum + +STR_ERROR_NO_SONGS :{WHITE}Compositio sine carminibus electa est. Nulla carmina canentur + +# Playlist window +STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Electio Compositionis Musicae +STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" +STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Index Carminum +STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Compositio - '{STRING}' +STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Vacuefacere +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Vacuefacere compositionem (modo Propriam I aut Propriam II) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Preme in carmen ut compositioni addantur (modo Propriae I aut Propriae II) +STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Preme in carmen ut ex compositione removeatur (modo Propria I aut Propria II) + +# Highscore window +STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Societates supremae quae attigerunt {NUM} +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Album Foederis Societatum in {NUM} +STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Laborator +STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Venditor +STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Negotiator +STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Mercator +STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :Dominus +STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL :Optimas +STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Dives Saeclaris +STR_HIGHSCORE_NAME :{PRESIDENT_NAME}, {COMPANY} +STR_HIGHSCORE_STATS :{BIG_FONT}'{STRING}' ({COMMA}) +STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{BLACK}{COMPANY} attingit statum '{STRING}'! +STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHITE}{PRESIDENT_NAME} of {COMPANY} attingit statum '{STRING}'! + +# Smallmap window +STR_SMALLMAP_CAPTION :{WHITE}Tabula Geographica - {STRING} + +STR_SMALLMAP_TYPE_CONTOURS :Topographia +STR_SMALLMAP_TYPE_VEHICLES :Vehicula +STR_SMALLMAP_TYPE_INDUSTRIES :Industriae +STR_SMALLMAP_TYPE_ROUTEMAP :Itinera Onerum +STR_SMALLMAP_TYPE_ROUTES :Viae +STR_SMALLMAP_TYPE_VEGETATION :Vegetatio +STR_SMALLMAP_TYPE_OWNERS :Possessores +STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Monstrare topographiam in tabula +STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Monstrare vehicula in tabula +STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Monstrare industrias in tabula +STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Monstrare itinera onerum in tabula +STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Monstrare itinera in tabula +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Monstrare vegetationem in tabula +STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Monstrare terrarum possessores in tabula +STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Preme in typum industriae ut monstretur celeturve. Ctrl+Preme ut omnes typi praeter eum qui electus est celentur. Ctrl+Preme denuo ut omnes typi monstrentur +STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Preme in societatem ut monstretur celeturve. Ctrl+Preme ut omnes praeter eam quae electa est celentur. Ctrl+Preme denuo ut omnes societates monstrentur +STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Preme in onus ut monstretur celeturve. Ctrl+Preme ut omnia praeter id quod electum est celentur. Ctrl+Preme denuo ut omnia onera monstrentur + +STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Viae +STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Ferriviae +STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLACK}Stationes/Aeroportus/Navalia +STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}Aedificia/Industriae +STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}Vehicula +STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}Hamaxostichi +STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}Vehicula Viaria +STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}Naves +STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}Aeroplana +STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}Itinera +STR_SMALLMAP_LEGENDA_FOREST :{TINY_FONT}{BLACK}Silva +STR_SMALLMAP_LEGENDA_RAILROAD_STATION :{TINY_FONT}{BLACK}Statio ferriviaria +STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}Statio autoplaustrica +STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}Statio laophorica +STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT :{TINY_FONT}{BLACK}Aeroportus/Heliportus +STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLACK}Navale +STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Terra Aspera +STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Terra Herbosa +STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Terra Nuda +STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Agri +STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Arbores +STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Saxa +STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}Aqua +STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Sine posessore +STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Oppida +STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Industriae +STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Deserta +STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Nix + +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Monstrare celareve nomina oppidorum in tabula +STR_SMALLMAP_CENTER :{BLACK}Movere tabulam geographicam supra conspectum praesentem +STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) +STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} +STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} +STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} +STR_SMALLMAP_DISABLE_ALL :{BLACK}Omnia celare +STR_SMALLMAP_ENABLE_ALL :{BLACK}Omnia monstrare +STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Monstrare altitudinem +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Celare omnes industrias in tabula +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Monstrare omnes industrias in tabula +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Monstrare celareve topographiam +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Celare possessiones societatum in tabula +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Monstrare possessiones societatum in tabula +STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Celare onera in tabula +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Monstrare onera in tabula + +# Status bar messages +STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Monstrare nuntium novissimum +STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - +STR_STATUSBAR_PAUSED :{YELLOW}* * INTERMISSUS * * +STR_STATUSBAR_AUTOSAVE :{RED}AUTOSERVANS +STR_STATUSBAR_SAVING_GAME :{RED}* * LUDUM SERVANS * * + +# News message history +STR_MESSAGE_HISTORY :{WHITE}Historia Nuntiorum +STR_MESSAGE_HISTORY_TOOLTIP :{BLACK}Index nuntiorum recentium +STR_MESSAGE_NEWS_FORMAT :{STRING} - {STRING} + +STR_NEWS_MESSAGE_CAPTION :{WHITE}Nuntium +STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} + +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Hamaxostichus primus advenit ad {STATION}! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Laophorium primum advenit ad {STATION}! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Autoplaustrum primum advenit ad {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Prima transviaria raeda vectoria advenit ad {STATION}! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Prima transviaria raeda oneraria advenit ad {STATION}! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Navis prima advenit ad {STATION}! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Cives celebrant . . .{}Aeroplanum primum advenit ad {STATION}! + +STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Calamitas Ferriviaria!{}{COMMA} in incendio pereunt post conflictum! +STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Calamitas Autocinetica!{}Gubernator in incendio perit post conflictum contra hamaxostichum! +STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}Calamitas Autocinetica!{}{COMMA} in incendio pereunt post conflictum contra hamaxostichum! +STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}Calamitas Aeroplanica!{}{COMMA} in incendio pereunt apud {STATION}! +STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}Calamitas Aeroplanica!{}Aeroplano fomes caruit, {COMMA} in incendio pereunt! + +STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Calamitas Zeppelinaria apud {STATION}! +STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Vehiculum destructum est in conflictu cum re volante ignota! +STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Ergasterium petrolearium fractum est apud {TOWN}! +STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabrica fracta est condicionibus suspectis apud {TOWN}! +STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}Res volans ignota appellit apud {TOWN}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Labes carbonifodinae ruinam facit apud {TOWN}! +STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Inundationes!{}Amplius {COMMA} irreperti, mortui rati post magnas inundationes! + +STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Tribulatio Societatis! +STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} venum detur aut perdatur nisi effectus mox increscit! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Consolidatio Societatum! +STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} vendita est; {STRING} emit, pretio {CURRENCY_LONG}! +STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Perditum! +STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} clusus est possessionibus venditis ab creditoribus! +STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Nova societas incohata! +STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} incipit apud {TOWN}! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} sumpta est ab {STRING}! +STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Praeses) + +STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}Novum oppidum {1:TOWN} constructum expensis ab {0:STRING} comparatis! + +STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nov{G us a um i ae a} {STRING} construitur apud {TOWN}! +STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nov{G us a um i ae a} {STRING} adsit{G 0 us a um i ae a} apud {TOWN}! + +STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIG_FONT}{BLACK}{STRING} se claudend{G 0 um am um os as a} esse nuntiat! +STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIG_FONT}{BLACK}{STRING} se claudend{G 0 um am um os as a} esse nuntiat propter inopiam materiarum! +STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES :{BIG_FONT}{BLACK}{STRING} se claudend{G 0 um am um os as a} esse nuntiat propter inopiam arborum vicinarum! + +STR_NEWS_EURO_INTRODUCTION :{BIG_FONT}{BLACK}Unio Monetaria Europaea!{}{}Euro iam solus nummus in civitate tua est! +STR_NEWS_BEGIN_OF_RECESSION :{BIG_FONT}{BLACK}Recessio Universa!{}{}Argentarii terrent oeconomia decrescente! +STR_NEWS_END_OF_RECESSION :{BIG_FONT}{BLACK}Recessio Finita!{}{}Industriae oeconomiae crescenti accredunt! + +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} productionem auget! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLACK}{INDUSTRY} nuntiat novam venam carbonis repertam esse!{}Productionem duplicatum iri nuntiatur! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}{INDUSTRY} nuntiat novum fontem petrolei repertum esse!{}Productionem duplicatum iri nuntiatur! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} nuntiat productionem duplicatum iri arte agriculturae meliore! +STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY} productionem {0:STRING.gen} {2:COMMA}% augere nuntiat! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} productionem dimidiare nuntiat! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}{INDUSTRY} se bestiolis infest{G 0 um am um os as a} esse nuntiat!{}Productionem dimidiare nuntiatur! +STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{1:INDUSTRY} productionem {0:STRING.gen} {2:COMMA}% decrescere nuntiat! + +STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} manens est in receptaculo +STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} manens est in receptaculo +STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} manens est in receptaculo +STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} manens est in tugurio + +# Order review system / warnings +STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} parum habet iussa in horario +STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} iussum irritum habet +STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} iussa duplicata habet +STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} stationem irritam habet in horario +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} habet in iussis aeroportum cuius aerodromus nimis brevis est + +STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} veterascit +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} valde veterascit +STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} valde veterascit atque necesse est redimi +STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} non potest iter reperire +STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} errans est +STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} anno priore {CURRENCY_LONG} lucratur +STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} non potest ire ad destinatum nam extra distantiam volatus maximam est + +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} constitit quia ordo reficiendi defecit +STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Autoredemptio defecit {VEHICLE}{}{STRING} + +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}Nov{G us a um i ae a} {STRING} parabil{G 0 is is e es es ia}! +STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} +STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G us a um i ae a} {STRING} parabil{G 0 is is e es es ia}! - {ENGINE} + +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} non diutius {STRING.acc} accipit +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} non diutius {STRING.acc} {STRING.acc}que accipit +STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} nunc {STRING.acc} accipit +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} nunc {STRING.acc} {STRING.acc}que accipit + +STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Condicio subsidii discedit:{}{}Vectura {STRING.gen} abs {STRING.abl} ad {STRING.acc} non diutius subveniatur +STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidium retractum:{}{}Vectura {STRING.gen} abs {STRING.abl} ad {STRING.acc} non diutius subvenietur +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsidium oblatum:{}{}Prima vectura {STRING.gen} abs {STRING.abl} ad {STRING.acc} unum annum subveniatur ab auctoritate vicinale! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}{STRING} assignatur subsidium!{}{}Vectura {STRING.gen} abs {STRING.abl} ad {STRING.acc} merebit reditum sesquiplicem anno secundo! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}{STRING} assignatur subsidium!{}{}Vectura {STRING.gen} abs {STRING.abl} ad {STRING.acc} merebit reditum duplicem anno secundo! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}{STRING} assignatur subsidium!{}{}Vectura {STRING.gen} abs {STRING.abl} ad {STRING.acc} merebit reditum triplicem anno secundo! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}{STRING} assignatur subsidium!{}{}Vectura {STRING.gen} abs {STRING.abl} ad {STRING.acc} merebit reditum quadruplicem anno secundo! + +STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Chaos vehicularium in {TOWN}!{}{}Reconstructio viarum, expensis ab {STRING} compartis, affert miseriam autoraedariis 6 menses! +STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Monopolium Vecturae! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}{TOWN}: Auctoritas vicinalis nuntiat {STRING} esse societatem unicam cui uno anno licet transportare intra oppidum! + +# Extra view window +STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Fenestra conspectus {COMMA} +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Transcribere ad fenestram conspectus +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Transcribere locum primarium ad hanc fenestram conspectus +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Glutinare ex fenestra conspectus +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Glutinare locum ex hac fenestra ad conspectum primarium + +# Game options window +STR_GAME_OPTIONS_CAPTION :{WHITE}Ludi optiones +STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Unitates nummi +STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Electio unitatum nummi + +############ start of currency region +STR_GAME_OPTIONS_CURRENCY_GBP :Libra Britannica (GBP) +STR_GAME_OPTIONS_CURRENCY_USD :Dollarium CFA (USD) +STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR) +STR_GAME_OPTIONS_CURRENCY_JPY :Ien Iaponicus (JPY) +STR_GAME_OPTIONS_CURRENCY_ATS :Scellinus Austriacus (ATS) +STR_GAME_OPTIONS_CURRENCY_BEF :Francus Belgicus (BEF) +STR_GAME_OPTIONS_CURRENCY_CHF :Francus Helveticus (CHF) +STR_GAME_OPTIONS_CURRENCY_CZK :Corona Cecha (CZK) +STR_GAME_OPTIONS_CURRENCY_DEM :Marca Germanica (DEM) +STR_GAME_OPTIONS_CURRENCY_DKK :Corona Danica (DKK) +STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Hispanica (ESP) +STR_GAME_OPTIONS_CURRENCY_FIM :Marca Finnica (FIM) +STR_GAME_OPTIONS_CURRENCY_FRF :Francus Francogallicus (FRF) +STR_GAME_OPTIONS_CURRENCY_GRD :Drachma Graeca (GRD) +STR_GAME_OPTIONS_CURRENCY_HUF :Florenus Hungaricus (HUF) +STR_GAME_OPTIONS_CURRENCY_ISK :Corona Islandica (ISK) +STR_GAME_OPTIONS_CURRENCY_ITL :Libra Italiana (ITL) +STR_GAME_OPTIONS_CURRENCY_NLG :Florenus Batavicus (NLG) +STR_GAME_OPTIONS_CURRENCY_NOK :Corona Norvegica (NOK) +STR_GAME_OPTIONS_CURRENCY_PLN :Złoty Polonica (PLN) +STR_GAME_OPTIONS_CURRENCY_RON :Leu Romanicus (RON) +STR_GAME_OPTIONS_CURRENCY_RUR :Rubelus Russicus (RUR) +STR_GAME_OPTIONS_CURRENCY_SIT :Dollarium Slovenicum (SIT) +STR_GAME_OPTIONS_CURRENCY_SEK :Corona Suecica (SEK) +STR_GAME_OPTIONS_CURRENCY_TRY :Libra Turcica (TRY) +STR_GAME_OPTIONS_CURRENCY_SKK :Corona Slovaca (SKK) +STR_GAME_OPTIONS_CURRENCY_BRL :Regalis Brasilica (BRL) +STR_GAME_OPTIONS_CURRENCY_EEK :Corona Estonica (EEK) +STR_GAME_OPTIONS_CURRENCY_LTL :Litas Lithuanica (LTL) +STR_GAME_OPTIONS_CURRENCY_KRW :Von Coreanus (KRW) +STR_GAME_OPTIONS_CURRENCY_ZAR :Randum Africae Australis (ZAR) +STR_GAME_OPTIONS_CURRENCY_CUSTOM :Propria... +STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgiana (GEL) +STR_GAME_OPTIONS_CURRENCY_IRR :Regalis Iranica (IRR) +############ end of currency region + + +############ start of measuring units region +############ end of measuring units region + +STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vehicula Viaria +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Eligere latus viae gubernandi +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Gubernantur sinistro +STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Gubernantur dextro + +STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Nomina oppidorum +STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Eligere oppidorum nomina + +############ start of townname region +STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Anglica (Primigenia) +STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francogallica +STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Theodisca +STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Anglica (Additicia) +STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Americae Latinae +STR_GAME_OPTIONS_TOWN_NAME_SILLY :Ridicula +STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Suecica +STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Batavica +STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finnica +STR_GAME_OPTIONS_TOWN_NAME_POLISH :Polonica +STR_GAME_OPTIONS_TOWN_NAME_SLOVAK :Slovaca +STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norvegica +STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Hungarica +STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austriaca +STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romanica +STR_GAME_OPTIONS_TOWN_NAME_CZECH :Cecha +STR_GAME_OPTIONS_TOWN_NAME_SWISS :Helvetica +STR_GAME_OPTIONS_TOWN_NAME_DANISH :Danica +STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turcica +STR_GAME_OPTIONS_TOWN_NAME_ITALIAN :Italiana +STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalana +############ end of townname region + +STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Servare automatice +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Eligere crebritatem automatice ludum servandi + +############ start of autosave dropdown +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Numquam +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Singulis mensibus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Ternis mensibus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Senis mensibus +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Duodenis mensibus +############ end of autosave dropdown + +STR_GAME_OPTIONS_LANGUAGE :{BLACK}Lingua +STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Eligere linguam interfaciei + +STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Cunctum scrinium +STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Optione electa, OpenTTD cuncto scrinio ostenditur + +STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolutio scrinii +STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Eligere resolutio scrinii adhibenda +STR_GAME_OPTIONS_RESOLUTION_OTHER :alia + +STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Magnitudo interfaciei +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Eligere magnitudinem interfaciei adhibendam + +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Solita +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Duplex +STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quadruplex + +STR_GAME_OPTIONS_BASE_GRF :{BLACK}Fundamentum graphicum +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Eligere fundamentum graphicum adhibendum +STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fascicul{P us i} absen{P s tes}/corrupt{P us i} +STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento graphico + +STR_GAME_OPTIONS_BASE_SFX :{BLACK}Fundamentum sonicum +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Eligere fundamentum sonicum adhibendum +STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento sonico + +STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Fundamentum musicum +STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Eligere fundamentum musicum adhibendum +STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fascicul{P us i} corrupt{P us i} +STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento musico + +STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Non potuit repperire indicem resolutionum +STR_ERROR_FULLSCREEN_FAILED :{WHITE}Mutatio ad cunctum scrinium defecit + +# Custom currency window + +STR_CURRENCY_WINDOW :{WHITE}Nummus Proprius +STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Collybus: {ORANGE}{CURRENCY_LONG} = £ {COMMA} +STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Minuere copiam nummi tui quae aequa est uni Librae Brittanicae (£) +STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}Augere copiam nummi tui quae aequa est uni Librae Brittanicae (£) +STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP :{BLACK}Eligere collybum nummi tui + +STR_CURRENCY_SEPARATOR :{LTBLUE}Symbolum separans: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP :{BLACK}Eligere symbolum separans nummi tui + +STR_CURRENCY_PREFIX :{LTBLUE}Praefixum: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP :{BLACK}Eligere praefixum nummi tui +STR_CURRENCY_SUFFIX :{LTBLUE}Suffixum: {ORANGE}{STRING} +STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP :{BLACK}Eligere suffixum nummi tui + +STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Mutare ad Euro: {ORANGE}{NUM} +STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Mutare ad Euro: {ORANGE}numquam +STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Eligere annum ad Euro mutandi +STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Mutare ad Euro ocius +STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Mutare ad Euro lentius + +STR_CURRENCY_PREVIEW :{LTBLUE}Praevisum: {ORANGE}{CURRENCY_LONG} +STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}Copia nummi tui quae aequa est 10000 Librae Britannicae (£) +STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Mutare parametrum nummi proprii + +STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Numerus competitorum maximus: {ORANGE}{COMMA} + +STR_NONE :Nullae +STR_FUNDING_ONLY :Modo conditu +STR_MINIMAL :Minimus +STR_NUM_VERY_LOW :Minor +STR_NUM_LOW :Parvus +STR_NUM_NORMAL :Mediocris +STR_NUM_HIGH :Magnus +STR_NUM_CUSTOM :Proprius +STR_NUM_CUSTOM_NUMBER :Proprius ({NUM}) + +STR_VARIETY_NONE :Nulla +STR_VARIETY_VERY_LOW :Minima +STR_VARIETY_LOW :Parva +STR_VARIETY_MEDIUM :Mediocris +STR_VARIETY_HIGH :Magna +STR_VARIETY_VERY_HIGH :Maxima + +STR_AI_SPEED_VERY_SLOW :Lentissima +STR_AI_SPEED_SLOW :Lenta +STR_AI_SPEED_MEDIUM :Mediocris +STR_AI_SPEED_FAST :Celeris +STR_AI_SPEED_VERY_FAST :Celerrima + +STR_SEA_LEVEL_VERY_LOW :Minima +STR_SEA_LEVEL_LOW :Parva +STR_SEA_LEVEL_MEDIUM :Mediocris +STR_SEA_LEVEL_HIGH :Magna +STR_SEA_LEVEL_CUSTOM :Propria +STR_SEA_LEVEL_CUSTOM_PERCENTAGE :Propria ({NUM}%) + +STR_RIVERS_NONE :Nulli +STR_RIVERS_FEW :Parvus +STR_RIVERS_MODERATE :Mediocris +STR_RIVERS_LOT :Magnus + +STR_DISASTER_NONE :Nullae +STR_DISASTER_REDUCED :Rarae +STR_DISASTER_NORMAL :Mediocres + +STR_SUBSIDY_X1_5 :Sesquiplex +STR_SUBSIDY_X2 :Duplex +STR_SUBSIDY_X3 :Triplex +STR_SUBSIDY_X4 :Quadruplex + +STR_TERRAIN_TYPE_VERY_FLAT :Planissimus +STR_TERRAIN_TYPE_FLAT :Planus +STR_TERRAIN_TYPE_HILLY :Clivosus +STR_TERRAIN_TYPE_MOUNTAINOUS :Montanus +STR_TERRAIN_TYPE_ALPINIST :Alpinus + +STR_CITY_APPROVAL_PERMISSIVE :Longe +STR_CITY_APPROVAL_TOLERANT :Breviter +STR_CITY_APPROVAL_HOSTILE :Brevissime + +STR_WARNING_NO_SUITABLE_AI :{WHITE}Nullae IA parabiles sunt...{}Potes arcessere nunullas IA in 'Inventario Interretiale' + +# Settings tree window +STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Electiones +STR_CONFIG_SETTING_FILTER_TITLE :{BLACK}Series colans: +STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Omnia expandere +STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Omnia collocare +STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(nulla explicatio parabilis) +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Valor solitus: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE :{LTBLUE}Electionis typus: {ORANGE}{STRING} +STR_CONFIG_SETTING_TYPE_CLIENT :Electio clientis (non inclusa in ludis servatis; omnes ludos afficit) +STR_CONFIG_SETTING_TYPE_GAME_MENU :Electio ludi (inclusa in ludis servatis; modo ludos novos afficit) +STR_CONFIG_SETTING_TYPE_GAME_INGAME :Electio ludi (inclusa in ludo servato; modo ludum currentem afficit) +STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Electio societatis (inclusa in ludis servatis; modo ludos novos afficit) +STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Electio societatis (inclusa in ludo servato; modo societatem currentem afficit) + +STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categoria: +STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Typus: +STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Definit indicem optionum ut solum electiones simplices aut mutatae monstrentur +STR_CONFIG_SETTING_RESTRICT_BASIC :Electiones simplices (modo monstrare electiones magni momenti) +STR_CONFIG_SETTING_RESTRICT_ADVANCED :Electiones doctae (monstrare pleras electiones) +STR_CONFIG_SETTING_RESTRICT_ALL :Electiones peritae (monstrare omnes electiones, etiam insolitas) +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Electiones cuius valores differunt solitis +STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Electiones cuius valores differunt eis ludorum novorum + +STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Definit indicem ut tantum quaedam optiones monstrentur +STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Omnes electiones +STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Electiones clientis (non inclusae in ludis servatis; omnes ludos afficiunt) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Electiones ludi (inclusae in ludis servatis; modo ludos novos afficiunt) +STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Electiones ludi (inclusae in ludo servato; modo ludum currentem afficiunt) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Electiones societatis (inclusae in ludis servatis; modo ludos novos afficiunt) +STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Electiones societatis (inclusae in ludo servato; modo societatem currentem afficiunt) +STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Monstrare eventum investigationis optione separatum{}{SILVER}Categoria {BLACK}ad {WHITE}{STRING} +STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Monstrare eventum investigationis optione separatum{}{SILVER}Typus {BLACK}ad {WHITE}Omnes electionis typi +STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Monstrare eventum investigationis optione separatum{}{SILVER}Categoria {BLACK}ad {WHITE}{STRING} {BLACK}et {SILVER}Typus {BLACK}ad {WHITE}Omnes electionis typi +STR_CONFIG_SETTINGS_NONE :{WHITE}- Nullae - + +STR_CONFIG_SETTING_OFF :Non +STR_CONFIG_SETTING_ON :Ita +STR_CONFIG_SETTING_DISABLED :Neglecta + +STR_CONFIG_SETTING_COMPANIES_OFF :Non +STR_CONFIG_SETTING_COMPANIES_OWN :Tuae societati +STR_CONFIG_SETTING_COMPANIES_ALL :Omnibus societatibus + +STR_CONFIG_SETTING_NONE :Nullus +STR_CONFIG_SETTING_ORIGINAL :Originalis +STR_CONFIG_SETTING_REALISTIC :Realisticus + +STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Laevo +STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Medio +STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Dextro + +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Creditum maximum in initio: {STRING} +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Copia crediti maxima (sine inflatione) +STR_CONFIG_SETTING_INTEREST_RATE :Proportio faenoris: {STRING} +STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Proportio faenoris creditorum; etiam inflationem afficit, si inflatio adest +STR_CONFIG_SETTING_RUNNING_COSTS :Pretii operandi: {STRING} +STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Eligere magnitudinem pretiorum vehicula operandi atque infrastructuram ministrandi +STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocitas struendi: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Definire IA velocitatem struendi +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Defectiones vehiculorum: {STRING} +STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Eligere crebritatem vehiculis deficiendi quae parum ministrantur +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicator subsidiorum: {STRING} +STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Eligere proportionem reditus additicii subsidiorum +STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Pretii struendi: {STRING} +STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Eligere magnitudinem pretiorum struendi emendique +STR_CONFIG_SETTING_RECESSIONS :Recessiones: {STRING} +STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Sinere recessiones oeconomicae aliquando accidere. In recessione oeconomica, productio omnino minuitur (sed, recessione confecta, productio redit ad magnitudinem priorem) +STR_CONFIG_SETTING_TRAIN_REVERSING :Vetare hamaxostichos cursum reflectere in stationibus: {STRING} +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si electa, hamaxostichi non possunt cursum reflectere in stationibus quae non sunt termini, etsi adest iter brevius ad destinatum cursu reflexo +STR_CONFIG_SETTING_DISASTERS :Calamitates: {STRING} +STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Sinere calamitates accidere, quae forte vehicula aut infrastructuram destruant +STR_CONFIG_SETTING_CITY_APPROVAL :Quamdiu auctoritas vicinalis patitur malas actiones ab societatibus: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Eligere patientiam auctoritatis vicinalis - quomodo venia eius afficitur a sonito et detrimento vicinitatis. Nimis malis actionibus, auctoritates vetant stationes struere, aedificia viasque removere + +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altitudo tabulae maxima: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Eligere altitudinem montium maximam in tabula +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Non licet hanc altitudinem eligere. Unus pluresve mons in tabula altior est +STR_CONFIG_SETTING_AUTOSLOPE :Sinere terram plasmare sub aedificia, vias, etc.: {STRING} +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Sinere terram plasmare sub aedificia et vias; tum necesse non est aedificia viasve removere +STR_CONFIG_SETTING_CATCHMENT :Sinere magnitudines regionum acceptionis magis realisticas esse: {STRING} +STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Si electa, aeroportus et alii stationum typi habent meliores regiones acceptionis +STR_CONFIG_SETTING_EXTRADYNAMITE :Sinere plures vias, pontes, et cuniculos removere in oppidis: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Si electa, infrastructura et aedificia oppidorum sunt magis facilia remotu +STR_CONFIG_SETTING_TRAIN_LENGTH :Longitudo hamaxostichorum maxima: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Eligere longitudinem hamaxostichorum maximam +STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} tegul{P 0 ae arum} +STR_CONFIG_SETTING_SMOKE_AMOUNT :Algorithmus fumi/favillarum vehiculorum: {STRING} +STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Eligere crebritatem fumi favillarumve quae e vehiculis emissi sunt +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Algorithmus accelerationis hamaxostichorum: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Eligere algorithmum physicae accelerationis hamaxostichorum. Algorithmus "originalis" facit ut omnes hamaxostichi aeque tardescant in clivis. Algorithmus "realisticus" facit ut hamaxostichi tardescant in clivis et flexibus per potestate, longitudine, etc. +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Algorithmus accelerationis vehiculorum viariorum: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Eligere algorithmum physicae accelerationis vehiculorum viariorum. Algorithmus "originalis" facit ut omnes vehicula aeque tardescant in clivis. Algorithmus "realisticus" facit ut vehicula tardescant in clivis et flexibus per potestate, vire tractionis, etc. +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Arduitas clivorum hamaxostichis: {STRING} +STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Arduitas tegulae clivosae hamaxosticho. Arduitate maiore, difficultas ascendendi maior est hamaxostichis +STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Arduitas clivorum vehiculis viariis: {STRING} +STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Arduitas tegulae clivosae vehiculo viario. Arduitate maiore, difficultas ascendendi maior est vehiculis +STR_CONFIG_SETTING_FORBID_90_DEG :Vetare hamaxostichos et naves cursum flectere 90°: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Hamaxostichi possunt cursum flectere in astariis aut 45° (diagonale deinde horizontale/verticale) aut 90° (horizontale deinde verticale); quoque naves possunt cursum 90° aut 45° cursum flectere. Hac electa, tantum 45° licet +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Sinere stationes iungi quae non contigua sunt: {STRING} +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Sinere partes stationi addere quae non prorsus contigua sunt. Necesse est Ctrl premere dum novae partes adduntur. +STR_CONFIG_SETTING_INFLATION :Inflatio: {STRING} +STR_CONFIG_SETTING_INFLATION_HELPTEXT :Sinere inflationem oeconomicam fieri, i.e. cum expensa surgunt celerius quam reditus +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Longitudo pontium maxima: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Eligere longitudinem pontium maximam +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altitudo pontium maxima: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Eligere altitudinem pontium maximam +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Longitudo cuniculorum maxima: {STRING} +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Eligere longitudinem cuniculorum maximam +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Modus industrias primarias ab lusore condendi: {STRING} +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Modus industriam primariam condendi. Optione 'nullo' electa, industrias condere non licet; 'prospiciendo' electa, licet condere industrias, sed locus industriae forte apparet in tabula atque forsitan desit; 'in loco aliarum industriarum' electa, licet industrias primarias condere ab societatibus sicut industrias secondarias, in quovis loco +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nullo +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :In loco aliarum industriarum +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospiciendo +STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Spatium planum circa industrias: {STRING} +STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Magnitudo spatii plani circa industriam. Facit ut adsit spatium circa quamque industriam ad ferriviam struendam, etc. +STR_CONFIG_SETTING_MULTIPINDTOWN :Sinere plures industrias eiusdem typi adesse apud oppidum: {STRING} +STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Generaliter, oppidum non vult plus quam unam industriam eiusdem typi. Hac electa, licet plures industrias eiusdem typi adesse in eodem oppido +STR_CONFIG_SETTING_SIGNALSIDE :Signalia ponuntur: {STRING} +STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Eligere latus astarii in quo signalia ponuntur +STR_CONFIG_SETTING_SIGNALSIDE_LEFT :in sinistro +STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :in latere gubernandi +STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :in dextro +STR_CONFIG_SETTING_SHOWFINANCES :Monstrare fenestram argentariam anno finito: {STRING} +STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Electa, fenestra argentaria ostenditur quoque anno finito ut facile inspiciatur status argentarius societatis +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nova iussa solite 'continua' sunt: {STRING} +STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Solite, vehicula consistunt cuique stationi quam inveniunt. Hac electa, vehicula praeteribunt, non consistentes, omnibus stationibus usque ad destinatum ultimum. Cave, haec electio modo valorem iussi novi solitum definit. Quidque tamen iussum potest utrique modo adlegi +STR_CONFIG_SETTING_STOP_LOCATION :Hamaxostichi solite sistunt in {STRING} suggestus +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Pars suggestus in qua hamaxostichi solite sistunt. 'Citera pars' est juxta aditum, in 'medio' certe est in medio suggestus, et 'ultra pars' est procul ab aditu. Cave, haec electio modo valorem iussi novi solitum definit. Quidque tamen iussum potest utrique modo adlegi +STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :citera parte +STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :medio +STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ultra parte +STR_CONFIG_SETTING_AUTOSCROLL :Cum cursor in margine est, movere: {STRING} +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Electa, conspectus vagari incipiunt cum cursor muris apud marginem fenestrae est +STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Nullam fenestram +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Fenestram primariam (cunctum scrinium) +STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Fenestram primariam +STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Quamque fenestram +STR_CONFIG_SETTING_BRIBE :Sinere largiri auctoritatem vicinalem: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Sinere societatibus conari largiri auctoritatem vicinalem. Si largitio animadversa est ab inquisitore, non licet societati agere in oppido 6 menses +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Sinere societatibus emere monopolia: {STRING} +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Si societas monopolium oppidi emit, nulla onera mittet stationibus competitorum in oppido (et onerariis et vectoriis) unum totum annum +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Sinere condere aedificia: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Electa, licet societatibus donare pecuniam oppidis ut nova aedificia condantur +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Sinere donare oppidis ut viae reconstruantur: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Sinere societatibus pecuniam donare oppidis ut viae reconstruantur et vectura viaria in oppido pessumdetur +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Sinere dare pecuniam aliis societatibus: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Sinere tradere pecuniam inter societates pluribus lusoribus +STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicator ponderis onerum ad hamaxostichos graves simulandos: {STRING} +STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Eligere momentum onerum hamaxostichis. Valoribus maioribus, difficilis est hamaxostichis onera trahere, magnopere in collibus +STR_CONFIG_SETTING_PLANE_SPEED :Multiplicator velocitatis aeroplanorum: {STRING} +STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Eligere si aeroplana eant lentius quam alia vehicula, ut reditus aeroplanorum minuatur +STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA} +STR_CONFIG_SETTING_PLANE_CRASHES :Calamitates aeroplanicae accidunt: {STRING} +STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Eligere crebritatem calamitatum aeroplanicarum +STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Numquam +STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Raro +STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Mediocriter +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Sinere stationes viarias pervias esse in viis oppidorum: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Sinere struere stationes viarias pervias in viis quas oppida possident +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Sinere stationes viarias pervias esse in viis competitorum: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Sinere struere stationes viarias pervias in viis quas competitores possident +STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Non licet mutare hanc electionem cum adsunt vehicula +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Tuitio infrastructurae: {STRING} +STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Electa, infrastructura prodit expensa tuitionis. Expensa crescunt celerius quam pro portione magnitudini retis, ergo societates magnae affectantur magis quam parvae + +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeroportus numquam recedunt: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Electa, omnes aeroportuum typi permanent post introductionem + +STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Monere si vehiculum errantem sit: {STRING} +STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Electa, nuntiatur cum vehicula non possint invenire viam ad destinatum +STR_CONFIG_SETTING_ORDER_REVIEW :Recensere iussa vehiculorum: {STRING} +STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Electa, iussa vehiculorum aliquando recensentur, atque nonnulla manifesta problemata nuntiantur, si detecta sint +STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Non +STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Ita, sed non vehicluorum constitorum +STR_CONFIG_SETTING_ORDER_REVIEW_ON :Ita, omnium vehiculorum +STR_CONFIG_SETTING_WARN_INCOME_LESS :Monere si reditus vehiculi negativus sit: {STRING} +STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT :Electa, nuntium ostenditur cum vehiculum non facit lucrum in anno +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicula numquam recedunt: {STRING} +STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Electa, omnes vehiculorum typi permanent post introductionem +STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autoredimere vehicula cum veterascunt: {STRING} +STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Electa, vehicula veterascentia automatice redimuntur, condicionibus satisfactis +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autoredimere vehiculum cum {STRING} aetatem maximam est +STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Aetas relativa in qua vehicula esse autoredimenda debet +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mens{P em es} ante +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mens{P em es} post +STR_CONFIG_SETTING_AUTORENEW_MONEY :Copia pecuniae minima necesse ad redimere: {STRING} +STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Copia pecuniae minima quam debet esse in ratione argentaria antequam vehicula autoredimenda sunt +STR_CONFIG_SETTING_ERRMSG_DURATION :Duratio nuntiorum errorum: {STRING} +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duratio nuntia errorum in fenestra rubra ostendendi. Cave, aliquae (severa) nuntia errorum non automatice clauditur, et necesse est lusori claudere +STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} secund{P um a} +STR_CONFIG_SETTING_HOVER_DELAY :Ostendere nuntia adiuvantia: {STRING} +STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Mora antequam nuntia adiuvantia ostenduntur cum mus elemento interfaciei superponitur. Etiam adiuvantia nuntia possunt ostendi globulo muris dextro cum hic valor 0 est +STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Superponere {COMMA} millisecund{P um a} +STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Globulo muris dextro +STR_CONFIG_SETTING_POPULATION_IN_LABEL :Monstrare incolas in signis nominis oppidorum: {STRING} +STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Monstrare numerum incolarum oppidorum in signis nominis eorum in tabula geographica +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Crassitudo linearum in formulis graphicis: {STRING} +STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Crassitudo/latitudo linearum in formulis graphicis. Linea tenuis est subtilis lectu, sed linea crassa facilior est visu atque colores faciliores discretu + +STR_CONFIG_SETTING_LANDSCAPE :Terra: {STRING} +STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Terrae definiunt quomodo ludis, nam varia onera habent atque oppida varia poscunt ut crescantur. Sed NewGRF et Ludi Scripta possunt subtilius gubernare ludum +STR_CONFIG_SETTING_LAND_GENERATOR :Generatrum terrae: {STRING} +STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Generatrum originale dependet fundamento graphico, et conficit figuras terrae fixas. TerraGenesis est generatrum sonitus Perlin cum electionibus subtilioribus +STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Originale +STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_TERRAIN_TYPE :Typus terrae: {STRING} +STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(modo TerraGenesis) Clivositas terrae +STR_CONFIG_SETTING_INDUSTRY_DENSITY :Numerus industriarum: {STRING} +STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Eligere quot industriae oportet esse constructae ac oportet sustineri intra ludum +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Spatium maximum abs finibus tabulae ad ergasteria petrolearia struenda: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Ergasteria petrolearia modo struuntur apud fines tabulae, i.e. in littore si mappa est insula +STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altitudo lineae nivis: {STRING} +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Eligere altitudinem apud quam nix incipit cadere in terra subarctica. Nix etiam afficit conditionem industriarum et desideria oppidorum +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Asperitas terrae (modo TerraGenesis): {STRING} +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(modo TerraGenesis) Eligere crebritatem collium: Terra teres habet minores rarosque colles. Terra aspera habet multos colles, et forsitan videtur esse repetita +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Teretissima +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Teres +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Aspera +STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Asperrima +STR_CONFIG_SETTING_VARIETY :Partitio varietatis: {STRING} +STR_CONFIG_SETTING_VARIETY_HELPTEXT :(modo TerraGenesis) Eligere si tabula contineat et montanos et planos locos. Quoniam haec solum facit ut tabula planior sit, electiones aliae oportet esse montanae +STR_CONFIG_SETTING_RIVER_AMOUNT :Numerus fluviorum: {STRING} +STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Eligere quot fluvii creandi sunt +STR_CONFIG_SETTING_TREE_PLACER :Algorithmus arbores ponendi: {STRING} +STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Eligere partitionem arborum in tabula: Algorithmus 'Originalis' aequaliter serit arbores, 'Melior' arbores serit gregatim +STR_CONFIG_SETTING_TREE_PLACER_NONE :Nullus +STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Originalis +STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Melior +STR_CONFIG_SETTING_ROAD_SIDE :Vehicula viaria: {STRING} +STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Eligere latus viae gubernandi +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Circuitus tabulae altitudinum: {STRING} +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Sinistrorsus +STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Dextrorsus +STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Altitudo scaenario plano data: {STRING} +STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Una pluresve tegulae apud finem septentrionalem non vacuae sunt +STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Una pluresve tegulae apud unum finem non aquae sunt + +STR_CONFIG_SETTING_STATION_SPREAD :Spatium stationum maximum: {STRING} +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Area maxima in qua partes stationum possunt esse sita. Cave, numeris spatii magnis, ludus lentus sit +STR_CONFIG_SETTING_SERVICEATHELIPAD :Ministrare helicoptera automatice in heliportibus: {STRING} +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Ministrare helicoptera post quemque appulsum, etsi non est tugurium portui +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Connectere terrae arcam ferramentorum arcis ferriviariae/viariae/aquariae/aeriae ferramentorum: {STRING} +STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Cum arca ferramentorum constructionis aperitur, etiam plasmationis terrae arca ferramentorum aperitur +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Color terrae in tabula adhibitus: {STRING} +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color terrae in tabula geographica parva +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Viridis +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Viridis Obscurus +STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Purpureus +STR_CONFIG_SETTING_REVERSE_SCROLLING :Revertere cursum vagationis: {STRING} +STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Quomodo tabula vagatur globulo dextri presso. Neglecta, mus conspectum movet. Electa, mus tabulam movet +STR_CONFIG_SETTING_SMOOTH_SCROLLING :Vagari conspectum leniter: {STRING} +STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Quomodo conspectus vagatur ad quemdam locum globulo sinistro in tabula premendi aut cum iubetur vagari ad quamdam rem in tabula. Electa, conspectus leniter vagatur. Neglecta, statim salit ad locum +STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ostendere nuntium adiuvans apud varia ferramenta construendi: {STRING} +STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Ostendere spatium atque altitudinem inter tegulas dum mus trahitur in construendo +STR_CONFIG_SETTING_LIVERIES :Monstrare schemata coloris vehiculorum per typum: {STRING} +STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Sinere schemata coloris esse per vehiculi typum (non tantum per vehiculi societatem) +STR_CONFIG_SETTING_LIVERIES_NONE :Non +STR_CONFIG_SETTING_LIVERIES_OWN :Modo meae societati +STR_CONFIG_SETTING_LIVERIES_ALL :Omnibus societatibus +STR_CONFIG_SETTING_PREFER_TEAMCHAT :Praeferre colloquium manus cum : {STRING} +STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Mutare iussum colloquii interni et publici ad aut +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Actio rotulae vagationis: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Sinere vagari rotulis muris volvendis +STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Amplificare/retrahere tabulam +STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Vagari tabulam +STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Nulla +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Velocitas tabulam rotula muris vagandi: {STRING} +STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Eligere velocitatem rotula muris vagationis +STR_CONFIG_SETTING_OSK_ACTIVATION :Claviatura in scrinio: {STRING} +STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Eligere modum claviaturam aperiendi in scrinio ut verba scribantur modo a mure (vel instrumento simile). Magnopere utilis est machinis parvis sine claviaturis veris +STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Celata +STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Bis premendo +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Semel premendo (dum conspicua est) +STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Semel premendo (statim) + +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Aemulatio dextrum premendi: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Eligere modum aemulationis dextrum globulum muris premendi +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Cmd+Premere +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Premere +STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Neglecta + +STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vagatio globuli sinistri: {STRING} +STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Annuere tabulam vagari trahendo globuli sinistri. Magnopere utilis est cum tangendo navigas in scrinio + +STR_CONFIG_SETTING_AUTOSAVE :Servare automatice: {STRING} +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Eligere crebritatem automatice ludum servandi + +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Forma {STRING} diei adhibenda in nominibus ludorum servatorum +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Forma diei in nominibus ludorum servatorum +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :longa (XXXI Dec 2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :brevis (31-12-2008) +STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31) + +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Intermittere automatice cum novus ludus incipitur: {STRING} +STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Electa, ludus automatice intermittitur cum incipitur, tunc tabula potest inspici +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Ludo intermisso, sinere: {STRING} +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Eligere quas actiones licet fieri, ludo intermisso +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nullam actionem +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Omnes actiones praeter constructionem +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Omnes actiones praeter terrae plasmationem +STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Omnes actiones +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Greges in indicibus vehiculorum adhibendae: {STRING} +STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Annuere indices cum gregibus vehiculorum adesse +STR_CONFIG_SETTING_LOADING_INDICATORS :Signa onerandi adhibenda: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Annuere signa onerandi monstrari super vehicula onerantia/exonerantia +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Monstrare horarium cum punctis et non cum diebus: {STRING} +STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Monstrare tempora navigandi in horariis punctis ludi et non diebus +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Monstrare adventum atque exitum in horariis: {STRING} +STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Monstrare in horariis adventum atque exitum aestimatum +STR_CONFIG_SETTING_QUICKGOTO :Celeris datio iussorum vehiculorum: {STRING} +STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Praesumere ferramentum 'I ad' cum fenestra iussorum aperitur +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Typus astarii solitus (novo ludo/ludo lecto): {STRING} +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Typus astarii adhibendus in novo ludo sive ludo lecto. 'Primus parabilis' typus est veterrimus, 'postremus parabilis' est novissimus typus, et 'frequentissime usus' est typus maxime in tabula usus +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Primus parabilis +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Postremus parabilis +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Frequentissime usus +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Monstrare cursus reservatos in astariis: {STRING} +STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Facere ut astaria cum cursibus ab hamaxosticho reservatis habeant alium colorem, ut facilior sit videre errores hamaxostichorum qui nolunt inire quosdam locos cum signalibus +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Ferramenta struendi manent post usum: {STRING} +STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Electa, ferramenta struendi (cuniculorum, pontium, ceterorum) tamen activa sunt postquam usa sunt +STR_CONFIG_SETTING_EXPENSES_LAYOUT :Congregare expensa in fenestra argentaria societatis: {STRING} +STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definire dispositionem fenestrae argentariae societatis + +STR_CONFIG_SETTING_SOUND_TICKER :Nuntia breviaria: {STRING} +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Sonare cum nuntium breviarium emittitur +STR_CONFIG_SETTING_SOUND_NEWS :Ephemeris: {STRING} +STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Sonare cum ephemeris ostenditur +STR_CONFIG_SETTING_SOUND_NEW_YEAR :Annni finis: {STRING} +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Sonare anno finito cum summarium effectus societatis ostenditur +STR_CONFIG_SETTING_SOUND_CONFIRM :Constructio: {STRING} +STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Sonare cum res struuntur +STR_CONFIG_SETTING_SOUND_CLICK :Pressus globulorum: {STRING} +STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Sonare globulo presso +STR_CONFIG_SETTING_SOUND_DISASTER :Calamitates/accidentes: {STRING} +STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Sonare cum calamitates accidentesve accidunt +STR_CONFIG_SETTING_SOUND_VEHICLE :Vehicula: {STRING} +STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Sinere vehicula sonare +STR_CONFIG_SETTING_SOUND_AMBIENT :Ambiens: {STRING} +STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Sinere sonos ambientes industriarum, oppidorum, terraeque fieri + +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Vetare constructionem infrastructurae dum nulla vehicula parabilia sunt: {STRING} +STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Electa, infrastructura modo parabilis est si adsunt vehicula parabilia. Itaque non licet absumere pecuniam tempusque struendi infrastructuram inutilem +STR_CONFIG_SETTING_MAX_TRAINS :Numerus maximus hamaxostichorum cuiusque societatis: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Numerus maximus hamaxostichorum quos societas habere licet +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Numerus maximus vehiculorum viariorum cuiusque societatis: {STRING} +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Numerus maximus vehiculorum viariorum quae societas habere licet +STR_CONFIG_SETTING_MAX_AIRCRAFT :Numerus maximus aeroplanorum cuiusque societatis: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Numerus maximus aeroplanorum quae societas habere licet +STR_CONFIG_SETTING_MAX_SHIPS :Numerus maximus navium cuiusque societatis: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Numerus maximus navium quas societas habere licet + +STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Vetare IA hamaxostichos habere: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Electa, non licet lusori IA hamaxostichos tenere +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Vetare IA vehicula viaria habere: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Electa, non licet lusori IA vehicula viaria tenere +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Vetare IA aeroplana habere: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Electa, non licet lusori IA aeroplana tenere +STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Vetare IA naves habere: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Electa, non licet lusori IA naves tenere + +STR_CONFIG_SETTING_AI_PROFILE :Ratio optionum solita: {STRING} +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Eligere quae ratio optionum adhibenda est ad fortuitam IA, sive valores initiales cum nova IA seu Ludi Scriptum legitur +STR_CONFIG_SETTING_AI_PROFILE_EASY :Facilis +STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mediocris +STR_CONFIG_SETTING_AI_PROFILE_HARD :Difficilis + +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Sinere IA in ludis cum pluribus lusoribus: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Sinere lusores IA asesse in ludis cum pluribus lusoribus +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antequam scripta suspensa sunt: {STRING} +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Numerus maximus computationum scripti uno vice + +STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervalla ministrationis monstrantur centesimis partibus: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Eligere si ministratio vehiculorum fiat aut quia satis sit tempus post ministrationem priorem, aut quia constantia vehiculi minuatur quamdam partem centesimam de constantia maxima +STR_CONFIG_SETTING_SERVINT_TRAINS :Intervallum ministrationis solitum hamaxostichis: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Eligere solitum intervallum ministrationis novis vehiculis ferriviariis, si non est proprium intervallum ministrationis vehiculo +STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}die{P 0 m s}/% +STR_CONFIG_SETTING_SERVINT_DISABLED :Neglectum +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Intervallum ministrationis solitum vehiculis viariis: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Eligere solitum intervallum ministrationis novis vehiculis viariis, si non est proprium intervallum ministrationis vehiculo +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Intervallum ministrationis solitum aeroplanis: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Eligere solitum intervallum ministrationis novis aeroplanis, si non est proprium intervallum ministrationis vehiculo +STR_CONFIG_SETTING_SERVINT_SHIPS :Intervallum ministrationis solitum navibus: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Eligere solitum intervallum ministrationis novis navibus, si non est proprium intervallum ministrationis vehiculo +STR_CONFIG_SETTING_NOSERVICE :Neglegere ministrationem cum nullae sunt defectiones vehiculorum: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Electa, vehicula non ministrantur defectionibus vetatis +STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Annuere currus ferriviarios habere velocitates maximas: {STRING} +STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Electa, velocitates maximae curruum afficiunt velocitatem maximam hamaxostichi +STR_CONFIG_SETTING_DISABLE_ELRAILS :Neglegere ferrivias electricas: {STRING} +STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Electa, hamaxostichi electrici non postulant electricam ferriviam, modo ferriviam solitam + +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN :De adventu primi vehiculi stationi lusoris: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT :Ostendere ephemeridem cum primum vehiculum adveniat stationi lusoris +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER :De adventu primi vehiculi stationi competitoris: {STRING} +STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Ostendere ephemeridem cum primum vehiculum adveniat stationi competitoris +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :De accidentibus / calamitatibus: {STRING} +STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Ostendere ephemeridem cum accidentes calamitatesve fiant +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :De indicio societatis: {STRING} +STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Ostendere ephemeridem cum nova societas condiatur, sive cum societas in angustiis sit +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :De apertione industriae: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Ostendere ephemeridem cum industria nova condiatur +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :De industriis claudendis: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Ostendere ephemeridem cum industria mox claudatur +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :De mutationibus oeconomicis: {STRING} +STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT :Ostendere ephemeridem cum magna eventa oeconomica fiant +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :De mutationibus productionis industriarum ab societate lusoris attentae: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT :Ostendere ephemeridem cum productio industriarum ab societate lusoris attentae mutet +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :De mutationibus productionis industriarum ab societatibus competitorum attentae: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Ostendere ephemeridem cum productio industriarum ab societatibus competitorum attentae mutet +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :De mutationibus productionis aliarum industriarum: {STRING} +STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Ostendere ephemeridem cum productio industriarum ab nulla societate attentae mutet +STR_CONFIG_SETTING_NEWS_ADVICE :De admonitione / indicio vehiculorum societatis lusoris: {STRING} +STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Ostendere nuntium de vehiculis attendendis +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :De novis vehiculis: {STRING} +STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Ostendere ephemeridem cum novus vehiculi typus parabilis sit +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :De mutationibus onerum acceptorum: {STRING} +STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Ostendere nuntium cum statio onera accepta mutet +STR_CONFIG_SETTING_NEWS_SUBSIDIES :De subsidiis: {STRING} +STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Ostendere ephemeridem de eventis subsidiaribus +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :De indicio generale: {STRING} +STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT :Ostendere ephemeridem de eventis generalibus, e.g. de emptione monopolii vel inceptione reconstructionis viarii + +STR_CONFIG_SETTING_NEWS_MESSAGES_OFF :Neglecta +STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Breviaria +STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Completa + +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Ephemeris colorata apparet anno: {STRING} +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Eligere annum in quo nuntia periodicorum colorata apparet. Antea, nuntia nigra albaque sunt +STR_CONFIG_SETTING_STARTING_YEAR :Annus initii: {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY :Sinere oeconomiam teretem esse (i.e. plures ac minores mutationes): {STRING} +STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Electa, productio industriarum saepius mutat, et minores per gradus. Sed haec electio nihil affert si industriae apparatae sunt ab NewGRF +STR_CONFIG_SETTING_ALLOW_SHARES :Sinere mercari sortes societatum: {STRING} +STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Sinere mercari sortes ab societatibus. Sortes societatum satis aetatis modo mercari licet +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Centesimae partes lucri pendenda in translatione: {STRING} +STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Centesimae lucri pars medietati data in systematibus transferendi, ut melius distribuatur lucrum vehiculorum +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Trahens, ponere signalia: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Eligere spatium signalia struendi usque ad impedimentum proximum (i.e. aliud signale, compitum), si signalia ponuntur trahendo +STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} quaque tegula +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Trahens, continere spatium fixum inter signalia: {STRING} +STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Eligere modum signalia ponendi Ctrl+trahente. Neglecta, signalia ponuntur circa cuniculos pontesque ut non essent magna spatia sine signalibus. Electa, signalia ponuntur n quaque tegula, ut signalia in astariis parallelis faciliora sint directu +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Struere signalia semaphorica automatice ante annum: {STRING} +STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Eligere annum in quo mutandum ad signalia electrica est. Antea, signalia semaphorica adhibenda sunt (quae idem munus habent, sed dissimilia sunt visu) +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Annuere GUI signalium: {STRING} +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Monstrare fenestram ad typos signalium struendos, in loco typum signalis mutando sine fenestra Ctrl+premendi +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Solitus typus signalis struendus: {STRING} +STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Typus solitus signalis adhibendus +STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Signalia zonalia +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Signalia itineris +STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Signalia itineris unius cursus +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Mutare inter typus signalium: {STRING} +STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Eligere typos signalium mutandos cum premitur Ctrl pressa in signale structum +STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Modo signalia zonalia +STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Modo signalia itineris +STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Omnes + +STR_CONFIG_SETTING_TOWN_LAYOUT :Dispositio viarum novis oppidis: {STRING} +STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Dispositio retis viarii oppidorum +STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Originalis +STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Viae satius +STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :Cancelli 2x2 +STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :Cancelli 3x3 +STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Fortuita +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Oppidis licet vias struere: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Sinere oppida vias struere. Neglege ut auctoritates oppidorum prohibeantur ipsas struere vias +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Oppidis licet transitus ferriviarios struere: {STRING} +STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Electa, licet auctoritatibus oppidorum struere ferriviarios transitus +STR_CONFIG_SETTING_NOISE_LEVEL :Sinere oppida moderari aeroportus finibus soniti: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Neglecta, modo licet duo esse aeroportus in quoque oppido. Electa, quot aeroportus licet esse in oppido finitur ab sonito et distantia cuiusque aeroportus etiam ab patientia soniti oppidi, quae afficitur numero incolarum oppidi +STR_CONFIG_SETTING_TOWN_FOUNDING :Lusoribus oppida condere: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Electa, licet lusoribus condere oppida intra ludum +STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Non licet +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Licet +STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Licet, atque propria dispositio oppidi + +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Positio arborum in ludo: {STRING} +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Quomodo arbores apparent intra ludum. Forsitan industriae afficiuntur quibus necesse sunt arbores, e.g. castra lignatorum +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Nulla {RED}(rumpit castra lignatorum) +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Modo in silvis plivualibus +STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Ubique + +STR_CONFIG_SETTING_TOOLBAR_POS :Locus primariae arcae ferramentorum: {STRING} +STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Locus horizontalis arcae ferramentorum primariae apud apicem fenestrae +STR_CONFIG_SETTING_STATUSBAR_POS :Locus serae status: {STRING} +STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Locus horizontalis serae status apud infimam partem fenestrae +STR_CONFIG_SETTING_SNAP_RADIUS :Radius fenestrae adhaerendae: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Spatium minimum inter fenestras antequam automatice adhaesae sunt aliis fenestris +STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} punct{P 0 um a} +STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Neglectus +STR_CONFIG_SETTING_SOFT_LIMIT :Numerus fenestrarum non glutinosarum maximus: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Quot fenestrae non glutinosae licet apertae esse antequam veteres fenestrae clauduntur ut spatium novarum fenestrarum liberetur +STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} +STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :Infinitus +STR_CONFIG_SETTING_ZOOM_MIN :Conspectus licet amplificari: {STRING} +STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Valor maximus ad conspectum amplificandum. Cave, desideria memoriae augetur valoribus huius electionis maioribus +STR_CONFIG_SETTING_ZOOM_MAX :Conspectus licet retrahi: {STRING} +STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Valor maximus ad conspectum retrahendum. Valores magni possunt ludum tardare +STR_CONFIG_SETTING_ZOOM_LVL_MIN :Quadruplex +STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :Duplex +STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Numquam +STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :Duplex +STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :Quadruplex +STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :Octuplex +STR_CONFIG_SETTING_TOWN_GROWTH :Oppida crescunt: {STRING} +STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Eligere celeritatem oppidorum crescendi +STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Numquam +STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lente +STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Mediocriter +STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Celeriter +STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Valde celeriter +STR_CONFIG_SETTING_LARGER_TOWNS :Proportio oppidorum quae urbes fient: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Quot oppida ex toto fient urbes, maiores conditu et celerius crescentes +STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 ex {COMMA} +STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Nulla +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicator magnitudinis initialis urbis: {STRING} +STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Quam maiores sunt urbes quam oppida in initio ludi + +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Recensere formulam partitionis {STRING} quoque die +STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tempus inter recensiones formulae partitionis. Quaeque recensio calculat rationes unius partis formulae. Ergo valor X huius electionis non facit ut cuncta formula recenseatur X quoque die; modo aliquot pars/partes recensebuntur. Valoribus minoribus, plus tempus CPU requiritur. Valoribus maioribus, plus tempus erit ad onerum partitionem incipiendam novis itineribus. +STR_CONFIG_SETTING_LINKGRAPH_TIME :{STRING}{NBSP}die{P 0:2 "" s} ad formulam partitionis recalculandam +STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tempus cuiusque recalculationis partis partitionis. Cum recalculatio incipitur, linea generatur quae agitur hos dies electos. Paucis diebus, magis probabilis est lineam non finiri cum debet esse finitam; tunc ludus intermittitur usque ad finitur ("segnitia"). Pluribus diebus, plus tempus requiritur ad partitionem mutandam cum itinera mutantur. +STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manu +STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrica +STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrica +STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modus partitionis vectoribus: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :Partitio "symmetrica" facit ut fere eadem copia vectorum mittatur a statione A ad stationem B quam a B ad A. Partitio "asymmetrica" facit ut quaelibet copia vectorum mittatur inter A et B. In partitione "manu" vectores non automatice partiuntur. +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modus partitionis epistulis: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :Partitio "symmetrica" facit ut fere eadem copia epistularum mittatur a statione A ad stationem B quam a B ad A. Partitio "asymmetrica" facit ut quaelibet copia epistularum mittatur inter A et B. In partitione "manu" epistulae non automatice partitur. +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modus partitionis classi oneris CATAPHRACTA: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Classis oneris CATAPHRACTA continet res pretiosas in terra temperata, adamantes in terra subtropica, aut aurum in terra subarctica; sed NewGRF possunt hoc mutare. Partitio "symmetrica" facit ut fere eadem copia oneris mittatur a statione A ad stationem B quam a B ad A. Partitio "asymmetrica" facit ut quaelibet copia oneris mittatur inter A et B. In partitione "manu" onera non automatice partiuntur. Admonetur eligere aut partitionem asymmetricam aut partitionem manu cum ludis in terra subarctica, nam argentariae non remittet aurum aurifodinis. In terris temperata sive subtropica potes eligere partitionem symmetricam nam argentariae adeo remittet res pretiosas originibus argentariis. +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modus partitionis aliis oneribus: {STRING} +STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :Partitio "asymmetrica" facit ut quaelibet copia onerum mittatur inter destinata et origines. In partitione "manu" onera non automatice partiuntur. +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Accuratio partitionis: {STRING} +STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Valoribus maioribus, plus tempus CPU requiritur in calculando. Si nimis magna est, ludus forsitan cunctetur. At si nimis parva est, partitio non erit accurata, et onera fortasse non mittantur ad destinata idonea. +STR_CONFIG_SETTING_DEMAND_DISTANCE :Consecutio distantiae quaesitis: {STRING} +STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Si valor huius est plus quam 0, distantia inter originem cuiusdam oneris, stationem A, et destinatum B afficit copiam oneris missam ex A ad B. Si B multo procul ab A est, paucius onus mittetur. Valoribus maioribus, paucius onus mittetur stationibus longinquis ac plus onus mittetur stationibus propinquis. +STR_CONFIG_SETTING_DEMAND_SIZE :Copia oneris remittenda in partitione symmetrica: {STRING} +STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Si haec minor est quam 100%, partitio symmetrica magis agit sicut asymmetrica; pauciora onera remittentur si quaedam copia missa est ad stationem. Dum est 0%, partitio symmetrica agit velut asymmetrica. +STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturitas itinerum brevium antequam itinera magnae capacitatis utenda sunt: {STRING} +STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequenter sunt multa itinera inter duas stationes. Partitio onerum imprimis saturat iter brevissimum, deinde paenultime brevissimum, etc. Saturitas computatur aestimatione et capacitatis et usus. Cum omnia itinera saturata sunt, si tamen est quaesitum, superonerabit omnia itinera, ea magnae capacitatis praelata. Sed saepe algorithmus non capacitatem aestimat satis accurate. Hac electione potes optare ad quam partem centesimam itineri breviori oportet esse saturum antequam iter longius optatur. Uti valoribus minoribus quam 100% ut stationes non superonerentur si capacitates superaestimatae sunt. + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unitates velocitatis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Quandocumque velocitas monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Anglicae (mph) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metricae (km/h) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unitates potestatis vehiculorum: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Quandocumque potestas vehiculi monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Anglicae (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metricae (hp) +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Unitates ponderis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Quandocumque pondus monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Anglicae (short t/ton) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metricae (t/tonne) +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Unitates voluminis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Quandocumque volumen monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Anglicae (gal) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metricae (l) +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Unitates viris tractionis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Quandocumque vis tractionis monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Anglicae (lbf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metricae (kgf) +STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) + +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Unitates altitudinis: {STRING} +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Quandocumque altitudo monstratur, monstrabitur his unitatibus electis +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Anglicae (ft) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metricae (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) + +STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localizatio +STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Res Graphicae +STR_CONFIG_SETTING_SOUND :{ORANGE}Soni +STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfacies +STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Res Generales +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Fenestrae Conspectus +STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Constructio +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Nuntia / Admonitio +STR_CONFIG_SETTING_COMPANY :{ORANGE}Societas +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Ratiocinium +STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicula +STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Physica +STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Itinera +STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Fines +STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Calamitates / Accidentes +STR_CONFIG_SETTING_GENWORLD :{ORANGE}Generatio Mundi +STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Circumiecta +STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Auctoritates +STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Oppida +STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industriae +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Partitio onerum +STR_CONFIG_SETTING_AI :{ORANGE}Competitores +STR_CONFIG_SETTING_AI_NPC :{ORANGE}Lusores computatrales + +STR_CONFIG_SETTING_PATHFINDER_OPF :Originale +STR_CONFIG_SETTING_PATHFINDER_NPF :NPF +STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Commendatum) + +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Inventrum itineris hamaxostichorum: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Inventrum itineris hamaxostichis adhibendum +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Inventrum itineris vehiculorum viariorum: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Inventrum itineris vehiculis viariis adhibendum +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Inventrum itineris navium: {STRING} +STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Inventrum itineris navibus adhibendum +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Reversio automatica apud signalia: {STRING} +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Sinere hamaxostichos reverti apud signale, si illic valde morati sunt + +STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Mutare valorem optionis + +# Config errors +STR_CONFIG_ERROR :{WHITE}Error in fasciculo configurationis... +STR_CONFIG_ERROR_ARRAY :{WHITE}... error in indice '{STRING}' +STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... valor irritus '{STRING}' spectans ad '{STRING}' +STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... littera postrema apud finem electionis '{STRING}' +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... neglectum NewGRF '{STRING}': agnoscamentum GRF duplicatum cum '{STRING}' +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... neglectum NewGRF irritum '{STRING}': {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :non inventum +STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :non salvus est usui fixo +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :systematis NewGRF +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :incompatibilis est huic OpenTTD editioni +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :ignotum +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... magnitudo compressionis '{STRING}' irrita est +STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... forma ludum servandi '{STRING}' parabilis non est. Revertens ad '{STRING}' +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... neglectum Fundamentum Graphicum '{STRING}': non inventum +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... neglectum Fundamentum Sonicum '{STRING}': non inventum +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... neglectum Fundamentum Musicum '{STRING}': non inventum +STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memoria deest +STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Non potuit collocare {BYTES} promptuarii spiritus. Promptuarium spiritus minuitur ad {BYTES}. Haec minuit effectum OpenTTD. Conare removere graphicas 32bpp ut desideria memoriae minuatur + +# Intro window +STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} + +STR_INTRO_NEW_GAME :{BLACK}Ludus Novus +STR_INTRO_LOAD_GAME :{BLACK}Legere Ludum +STR_INTRO_PLAY_SCENARIO :{BLACK}Ludere Scaenarium +STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Ludere Tabulam Altitudinum +STR_INTRO_SCENARIO_EDITOR :{BLACK}Scriptorium Scaenarii +STR_INTRO_MULTIPLAYER :{BLACK}Plurium Lusorum + +STR_INTRO_GAME_OPTIONS :{BLACK}Ludi Optiones +STR_INTRO_HIGHSCORE :{BLACK}Album Punctorum Supremorum +STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Electiones +STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF Optiones +STR_INTRO_ONLINE_CONTENT :{BLACK}Inspicere Inventarium Interretiale +STR_INTRO_SCRIPT_SETTINGS :{BLACK}IA/Ludi Scriptorum Optiones +STR_INTRO_QUIT :{BLACK}Exire + +STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Incipere novum ludum. Ctrl+Preme ut configuratio tabulae omittatur +STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Legere ludum servatum +STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Incipere novum ludum, tabula altitudinum adhibita +STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Incipere novum ludum, scaenario proprio adhibito +STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Creare scaenarium proprium +STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Incipere ludum cum pluribus lusoribus + +STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Eligere hanc terram, nomine 'temperata' +STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Eligere hanc terram, nomine 'subarctica' +STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Eligere hanc terram, nomine 'subtropica' +STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Eligere hanc terram, nomine 'terra ludicrorum' + +STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Monstrare ludi optiones +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Monstrare album punctorum supremorum +STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Monstrare electiones +STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Monstrare optiones NewGRF +STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Inspicere inventarium Interretiale in quo res sicut NewGRF, scaenaria, musica, etc. sunt +STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Monstrare optiones IA/Ludi scriptorum +STR_INTRO_TOOLTIP_QUIT :{BLACK}Exire OpenTTD + +STR_INTRO_TRANSLATION :{BLACK}In hac interpretatione, {NUM} series desunt. Quaesimus, iuva OpenTTD meliorari et dic te velle interpretem esse. Vide readme.txt in quo plura sunt. + +# Quit window +STR_QUIT_CAPTION :{WHITE}Exire +STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Esne certus te velle exire OpenTTD et redire ad {STRING}? +STR_QUIT_YES :{BLACK}Ita +STR_QUIT_NO :{BLACK}Non + +# Supported OSes +STR_OSNAME_WINDOWS :Windows +STR_OSNAME_DOS :DOS +STR_OSNAME_UNIX :Unix +STR_OSNAME_OSX :OS{NBSP}X +STR_OSNAME_BEOS :BeOS +STR_OSNAME_HAIKU :Haiku +STR_OSNAME_MORPHOS :MorphOS +STR_OSNAME_AMIGAOS :AmigaOS +STR_OSNAME_OS2 :OS/2 +STR_OSNAME_SUNOS :SunOS + +# Abandon game +STR_ABANDON_GAME_CAPTION :{WHITE}Relinquere Ludum +STR_ABANDON_GAME_QUERY :{YELLOW}Esne certus te velle ludum relinquere? +STR_ABANDON_SCENARIO_QUERY :{YELLOW}Esne certus te velle scaenarium relinquere? + +# Cheat window +STR_CHEATS :{WHITE}Tricae +STR_CHEATS_TOOLTIP :{BLACK}Quadrum signi plenum indicat trica iam a te usa est +STR_CHEATS_WARNING :{BLACK}Cave! Competitores tuas falsurus es! Memento tantam infamiam memoria omnium in aeternum teneri! +STR_CHEAT_MONEY :{LTBLUE}Augere pecuniam {CURRENCY_LONG} +STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ludens es in loco societatis: {ORANGE}{COMMA} +STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magica machina aggerandi (removere industrias, obiecta immobilia): {ORANGE}{STRING} +STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Sinere cuniculos sese transgredi: {ORANGE}{STRING} +STR_CHEAT_NO_JETCRASH :{LTBLUE}Magna aeroplana non corruent (frequenter) in aeroportibus parvis: {ORANGE}{STRING} +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Eligere altitudinem tabulae maximam: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Eligere altitudinem montium maximam in tabula +STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Terra temperata +STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Terra subarctica +STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Terra subtropica +STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Terra ludicrorum +STR_CHEAT_CHANGE_DATE :{LTBLUE}Mutare diem: {ORANGE}{DATE_SHORT} +STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Mutare annum currentem +STR_CHEAT_SETUP_PROD :{LTBLUE}Sinere mutare productiones industriarum: {ORANGE}{STRING} + +# Livery window +STR_LIVERY_CAPTION :{WHITE}Schema Coloris Novum + +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Monstrare schemata coloris generalia +STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Monstrare schemata coloris hamaxostichorum +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Monstrare schemata coloris vehiculorum viariorum +STR_LIVERY_SHIP_TOOLTIP :{BLACK}Monstrare schemata coloris navium +STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Monstrare schemata coloris aeroplanorum +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Eligere colorem primarium schematis electi. Ctrl+Preme ut color omnibus schematibus sit primarius +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Eligere colorem secundum schematis electi. Ctrl+Preme ut color omnibus schematibus sit secundus +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Eligere schema mutandum, sive schemata plura (Ctrl pressa). Preme in quadrum ut usus schematis mutetur + +STR_LIVERY_DEFAULT :Schema Solitum +STR_LIVERY_STEAM :Hamaxa Vaporaria +STR_LIVERY_DIESEL :Hamaxa Diseliana +STR_LIVERY_ELECTRIC :Hamaxa Electrica +STR_LIVERY_MONORAIL :Hamaxa Monoorbitalis +STR_LIVERY_MAGLEV :Hamaxa Maglev +STR_LIVERY_DMU :DMU +STR_LIVERY_EMU :EMU +STR_LIVERY_PASSENGER_WAGON_STEAM :Currus Vectorius (Vaporaria) +STR_LIVERY_PASSENGER_WAGON_DIESEL :Currus Vectorius (Diseliana) +STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Currus Vectorius (Electrica) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :Currus Vectorius (Monoorbitalis) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :Currus Vectorius (Maglev) +STR_LIVERY_FREIGHT_WAGON :Currus Onerarius +STR_LIVERY_BUS :Laophorium +STR_LIVERY_TRUCK :Autoplaustrum +STR_LIVERY_PASSENGER_SHIP :Navis Vectoria +STR_LIVERY_FREIGHT_SHIP :Navis Oneraria +STR_LIVERY_HELICOPTER :Helicopterum +STR_LIVERY_SMALL_PLANE :Aeroplanum Parvum +STR_LIVERY_LARGE_PLANE :Aeroplanum Magnum +STR_LIVERY_PASSENGER_TRAM :Transviaria Raeda Vectoria +STR_LIVERY_FREIGHT_TRAM :Transviaria Raeda Oneraria + +# Face selection window +STR_FACE_CAPTION :{WHITE}Electio Faciei +STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancellare electionem novae faciei +STR_FACE_OK_TOOLTIP :{BLACK}Confirmare electionem novae faciei +STR_FACE_RANDOM :{BLACK}Commiscere + +STR_FACE_MALE_BUTTON :{BLACK}Masculina +STR_FACE_MALE_TOOLTIP :{BLACK}Eligere facies masculinas +STR_FACE_FEMALE_BUTTON :{BLACK}Feminea +STR_FACE_FEMALE_TOOLTIP :{BLACK}Eligere facies femineas +STR_FACE_NEW_FACE_BUTTON :{BLACK}Facies Nova +STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Creare novam faciem fortuitam +STR_FACE_ADVANCED :{BLACK}Praecipua +STR_FACE_ADVANCED_TOOLTIP :{BLACK}Electio faciei praecipua +STR_FACE_SIMPLE :{BLACK}Simpliciter +STR_FACE_SIMPLE_TOOLTIP :{BLACK}Eligere faciem simpliciter +STR_FACE_LOAD :{BLACK}Legere +STR_FACE_LOAD_TOOLTIP :{BLACK}Legere faciem dilectam +STR_FACE_LOAD_DONE :{WHITE}Facies dilecta lecta est ex fasciculo OpenTTD configurationis +STR_FACE_FACECODE :{BLACK}Numerus faciei lusoris +STR_FACE_FACECODE_TOOLTIP :{BLACK}Spicere vel eligere numerum praesidis societatis faciei +STR_FACE_FACECODE_CAPTION :{WHITE}Spicere vel eligere numerum praesidis societatis faciei +STR_FACE_FACECODE_SET :{WHITE}Novus numerus faciei electus est +STR_FACE_FACECODE_ERR :{WHITE}Numerus faciei confirmatus non est - oportet esse numerus inter 0 et 4,294,967,295! +STR_FACE_SAVE :{BLACK}Servare +STR_FACE_SAVE_TOOLTIP :{BLACK}Servare faciem dilectam +STR_FACE_SAVE_DONE :{WHITE}Haec facies servabit ad dilectam tuam in fasciculo OpenTTD configurationis +STR_FACE_EUROPEAN :{BLACK}Europaea +STR_FACE_SELECT_EUROPEAN :{BLACK}Eligere facies Europaeas +STR_FACE_AFRICAN :{BLACK}Africana +STR_FACE_SELECT_AFRICAN :{BLACK}Eligere facies Africanas +STR_FACE_YES :Ita +STR_FACE_NO :Non +STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Apponere mystacem vel inaurem +STR_FACE_HAIR :Capilli: +STR_FACE_HAIR_TOOLTIP :{BLACK}Mutare capillos +STR_FACE_EYEBROWS :Supercilia: +STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Mutare supercilia +STR_FACE_EYECOLOUR :Color oculorum: +STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Mutare colorem oculorum +STR_FACE_GLASSES :Perspicilla: +STR_FACE_GLASSES_TOOLTIP :{BLACK}Apponere perspicilla +STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Mutare perspicilla +STR_FACE_NOSE :Nasus: +STR_FACE_NOSE_TOOLTIP :{BLACK}Mutare nasum +STR_FACE_LIPS :Labra: +STR_FACE_MOUSTACHE :Mystax: +STR_FACE_LIPS_MOUSTACHE_TOOLTIP :{BLACK}Mutare labra vel mystacem +STR_FACE_CHIN :Mentum: +STR_FACE_CHIN_TOOLTIP :{BLACK}Mutare mentum +STR_FACE_JACKET :Vestis: +STR_FACE_JACKET_TOOLTIP :{BLACK}Mutare vestem +STR_FACE_COLLAR :Collare: +STR_FACE_COLLAR_TOOLTIP :{BLACK}Mutare collare +STR_FACE_TIE :Focale: +STR_FACE_EARRING :Inauris: +STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Mutare focale vel inaurem + +# Network server list +STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Modus Plurium Lusorum +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Ostensum +STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Eligere servatrum ostensum (interretis) aut non ostensum (LAN) +STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Non +STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ita +STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Nomen lusoris: +STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Hoc est nomen tuum aliis lusoribus visibile + +STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Nomen +STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Nomen ludi +STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Clientes +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clientes currentes / clientes max.{}Societates currentes / societates max. +STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Magnitudo tabulae +STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Magnitudo ludi tabulae{}Preme ut magnitudine separenur +STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Dies +STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Dies currens +STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}Anni +STR_NETWORK_SERVER_LIST_YEARS_CAPTION_TOOLTIP :{BLACK}Numerus ludi annorum +STR_NETWORK_SERVER_LIST_INFO_ICONS_TOOLTIP :{BLACK}Lingua, editio servatri, etc. + +STR_NETWORK_SERVER_LIST_CLICK_GAME_TO_SELECT :{BLACK}Eligere ludum ex indice +STR_NETWORK_SERVER_LIST_LAST_JOINED_SERVER :{BLACK}Servatrum prius iunctum: +STR_NETWORK_SERVER_LIST_CLICK_TO_SELECT_LAST :{BLACK}Eligere servatrum abs te prius adhibitum + +STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}LUDI INDICIA +STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Clientes: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} +STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Lingua: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Terra: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Magnitudo tabulae: {WHITE}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Editio servatri: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Inscriptio servatri: {WHITE}{STRING} +STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Dies initii: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Dies currens: {WHITE}{DATE_SHORT} +STR_NETWORK_SERVER_LIST_PASSWORD :{SILVER}Tessera custoditum! +STR_NETWORK_SERVER_LIST_SERVER_OFFLINE :{SILVER}SERVATRUM CLAUSUM +STR_NETWORK_SERVER_LIST_SERVER_FULL :{SILVER}SERVATRUM PLENUM +STR_NETWORK_SERVER_LIST_VERSION_MISMATCH :{SILVER}EDITIO IMPAR +STR_NETWORK_SERVER_LIST_GRF_MISMATCH :{SILVER}NEWGRF IMPARIA + +STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Ludum iungere +STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Servatrum instaurare +STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Iterum arcessere indicia servatri + +STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Servatrum quaerere +STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Quarere servatrum in rete +STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Addere servatrum +STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Addit servatrum indici quod semper inspicetur si ludus activus insit +STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Servatrum incohare +STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Servatrum tuum proprium incohare + +STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Nomen tuum inscribe +STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Inscribe inscriptionem IP servatri + +# Start new multiplayer server +STR_NETWORK_START_SERVER_CAPTION :{WHITE}Incipere novum ludum cum pluribus lusoribus + +STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nomen ludi: +STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Hoc ludi nomen monstrabitur aliis lusoribus in ludorum indice +STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Elige tesseram +STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Custodire tessera ludum tuum, si non vis publicos iungere + +STR_NETWORK_START_SERVER_UNADVERTISED :Non +STR_NETWORK_START_SERVER_ADVERTISED :Ita +STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} clien{P s tes} +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Clientes maximi: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Eligere numerum maximum clientorum. Necesse non est omnes loci pleni esse +STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} societa{P s tes} +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Societates maximae: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Eligere numerum maximum societatum +STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" es} +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Spectatores maximi: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Eligere numerum maximum spectatorum +STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Lingua adhibita: +STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Lingua in servatro adhibita + +STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Inscribe nomen ludi retis + +# Network game languages +############ Leave those lines in this order!! +STR_NETWORK_LANG_ANY :Quaevis +STR_NETWORK_LANG_ENGLISH :Anglica +STR_NETWORK_LANG_GERMAN :Theodisca +STR_NETWORK_LANG_FRENCH :Francogallica +STR_NETWORK_LANG_BRAZILIAN :Brasilica +STR_NETWORK_LANG_BULGARIAN :Bulgarica +STR_NETWORK_LANG_CHINESE :Sinica +STR_NETWORK_LANG_CZECH :Cecha +STR_NETWORK_LANG_DANISH :Danica +STR_NETWORK_LANG_DUTCH :Batavica +STR_NETWORK_LANG_ESPERANTO :Esperantica +STR_NETWORK_LANG_FINNISH :Finnica +STR_NETWORK_LANG_HUNGARIAN :Hungarica +STR_NETWORK_LANG_ICELANDIC :Islandica +STR_NETWORK_LANG_ITALIAN :Italiana +STR_NETWORK_LANG_JAPANESE :Iaponica +STR_NETWORK_LANG_KOREAN :Coreana +STR_NETWORK_LANG_LITHUANIAN :Lithuanica +STR_NETWORK_LANG_NORWEGIAN :Norvegica +STR_NETWORK_LANG_POLISH :Polonica +STR_NETWORK_LANG_PORTUGUESE :Lusitana +STR_NETWORK_LANG_ROMANIAN :Romanica +STR_NETWORK_LANG_RUSSIAN :Russica +STR_NETWORK_LANG_SLOVAK :Slovaca +STR_NETWORK_LANG_SLOVENIAN :Slovena +STR_NETWORK_LANG_SPANISH :Hispanica +STR_NETWORK_LANG_SWEDISH :Suecica +STR_NETWORK_LANG_TURKISH :Turcica +STR_NETWORK_LANG_UKRAINIAN :Ucrainica +STR_NETWORK_LANG_AFRIKAANS :Africana +STR_NETWORK_LANG_CROATIAN :Croatica +STR_NETWORK_LANG_CATALAN :Catalana +STR_NETWORK_LANG_ESTONIAN :Estonica +STR_NETWORK_LANG_GALICIAN :Gallaica +STR_NETWORK_LANG_GREEK :Graeca +STR_NETWORK_LANG_LATVIAN :Lettonica +############ End of leave-in-this-order + +# Network game lobby +STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Atrium Plurium Lusorum + +STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Parans ad iungendum: {ORANGE}{STRING} +STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Index societatum in hoc ludo. Potes iungere aut novam incipere si locus vacuus adest + +STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}INDICIA SOCIETATIS +STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Nomen societatis: {WHITE}{STRING} +STR_NETWORK_GAME_LOBBY_INAUGURATION_YEAR :{SILVER}Initium: {WHITE}{NUM} +STR_NETWORK_GAME_LOBBY_VALUE :{SILVER}Aestimatio societatis: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_CURRENT_BALANCE :{SILVER}Pecunia currens: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_LAST_YEARS_INCOME :{SILVER}Reditus anni prioris: {WHITE}{CURRENCY_LONG} +STR_NETWORK_GAME_LOBBY_PERFORMANCE :{SILVER}Effectus: {WHITE}{NUM} + +STR_NETWORK_GAME_LOBBY_VEHICLES :{SILVER}Vehicula: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Stationes: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {SHIP}, {NUM} {PLANE} +STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Lusores: {WHITE}{STRING} + +STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Societas Nova +STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Creare societatem novam +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Ludum spectare +STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Aspicere ludum sicut spectator +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Societatem iungere +STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Administrare hanc societatem + +# Network connecting window +STR_NETWORK_CONNECTING_CAPTION :{WHITE}Coniungens... + +############ Leave those lines in this order!! +STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Coniungens... +STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Auctorans... +STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Manens... +STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Tabulam arcessens... +STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Data componens... +STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Nuntians... + +STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Lndicium ludi arcessens... +STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Indicium societatis arcessens... +############ End of leave-in-this-order +STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} clien{P s tes} ante te +STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} adhuc arcessita +STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} adhuc arcessita + +STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Disiungere + +STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servatrum tutum est. Tesseram inscribe +STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Societas tuta est. Tesseram inscribe + +# Network company list added strings +STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Index clientum +STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Spectare +STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Societas Nova + +# Network client list +STR_NETWORK_CLIENTLIST_KICK :Dimittere +STR_NETWORK_CLIENTLIST_BAN :Expellere +STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dare pecuniam +STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Ad omnes loqui +STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Ad societatem loqui +STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Ad clientem loqui + +STR_NETWORK_SERVER :Servatrum +STR_NETWORK_CLIENT :Cliens +STR_NETWORK_SPECTATORS :Spectatores + +STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Inscribe quantitatem pecuniae dandam +STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Spectator + +# Network set password +STR_COMPANY_PASSWORD_CANCEL :{BLACK}Relinquere tesseram inscriptam +STR_COMPANY_PASSWORD_OK :{BLACK}Dare novam tesseram societati +STR_COMPANY_PASSWORD_CAPTION :{WHITE}Tessera societatis +STR_COMPANY_PASSWORD_MAKE_DEFAULT :{BLACK}Tessera societatis solita +STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Fac ut haec tessera societatis solita sit novis societatibus + +# Network company info join/password +STR_COMPANY_VIEW_JOIN :{BLACK}Iungere +STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Iungere ludereque in hac societate +STR_COMPANY_VIEW_PASSWORD :{BLACK}Tessera +STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Custodire tessera societatem tuam ut clientes inauctorati iungere non possint +STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Eligere tesseram societatis + +# Network chat +STR_NETWORK_CHAT_SEND :{BLACK}Mittere +STR_NETWORK_CHAT_COMPANY_CAPTION :[Manui] : +STR_NETWORK_CHAT_CLIENT_CAPTION :[Privatum] {STRING}: +STR_NETWORK_CHAT_ALL_CAPTION :[Omnibus] : + +STR_NETWORK_CHAT_COMPANY :[Manui] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_COMPANY :[Manui] Ad {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_CLIENT :[Privatum] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_TO_CLIENT :[Privatum] Ad {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_ALL :[Omnibus] {STRING}: {WHITE}{STRING} +STR_NETWORK_CHAT_OSKTITLE :{BLACK}Inscribere nuntium ad retis colloquium + +# Network messages +STR_NETWORK_ERROR_NOTAVAILABLE :{WHITE}Nullae res retis inventae vel compilata sine ENABLE_NETWORK +STR_NETWORK_ERROR_NOSERVER :{WHITE}Nulli ludi in rete inventi +STR_NETWORK_ERROR_NOCONNECTION :{WHITE}Nulla responsa ab servatro +STR_NETWORK_ERROR_NEWGRF_MISMATCH :{WHITE}Non potest iungere propter NewGRF imparia +STR_NETWORK_ERROR_DESYNC :{WHITE}Synchronizatio ludi retis defecit +STR_NETWORK_ERROR_LOSTCONNECTION :{WHITE}Connexus retis amissus +STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Non potest legere ludum servatum +STR_NETWORK_ERROR_SERVER_START :{WHITE}Servatrum non potest incipi +STR_NETWORK_ERROR_CLIENT_START :{WHITE}Non potest coniungere +STR_NETWORK_ERROR_TIMEOUT :{WHITE}Connexus #{NUM} defecit +STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Error protocolis adfuit atque connexus clausus est +STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Editio clientis impar est editioni servatri +STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Tessera impar +STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Servatrum plenum est +STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Expulsus servatro es +STR_NETWORK_ERROR_KICKED :{WHITE}Dimissus ex servatro es +STR_NETWORK_ERROR_CHEATER :{WHITE}Fallere non licet in hoc servatro +STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Nimium iussa servatro mittebas +STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Nimis lente eras in tesseram inscribendo +STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Computatrum tuum nimis lentius quam servatrum est +STR_NETWORK_ERROR_TIMEOUT_MAP :{WHITE}Computatrum tuum nimis lente erat in tabulam geographicam arcessendo +STR_NETWORK_ERROR_TIMEOUT_JOIN :{WHITE}Computatrum tuum nimis lente erat in ad servatrum iungendo + +############ Leave those lines in this order!! +STR_NETWORK_ERROR_CLIENT_GENERAL :error generalis +STR_NETWORK_ERROR_CLIENT_DESYNC :error desync +STR_NETWORK_ERROR_CLIENT_SAVEGAME :non potuit legere tabulam +STR_NETWORK_ERROR_CLIENT_CONNECTION_LOST :connexus amissus +STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :error protocolli +STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF imparia +STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :inauctoratus +STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :fasciculus irritus vel ignotus +STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :editio impar +STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nomen iam adhibitum +STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :tessera impar +STR_NETWORK_ERROR_CLIENT_COMPANY_MISMATCH :agnoscamentum societatis impar in 'DoCommand' +STR_NETWORK_ERROR_CLIENT_KICKED :dimissus ab servatro +STR_NETWORK_ERROR_CLIENT_CHEATER :conabatur trica uti +STR_NETWORK_ERROR_CLIENT_SERVER_FULL :servatrum plenum +STR_NETWORK_ERROR_CLIENT_TOO_MANY_COMMANDS :mittebat nimium iussa +STR_NETWORK_ERROR_CLIENT_TIMEOUT_PASSWORD :nulla tessera recipitur +STR_NETWORK_ERROR_CLIENT_TIMEOUT_COMPUTER :connexus nimis lentus +STR_NETWORK_ERROR_CLIENT_TIMEOUT_MAP :tabula geographica arcessebatur nimis lente +STR_NETWORK_ERROR_CLIENT_TIMEOUT_JOIN :tabula geographica componebatur nimis lente +############ End of leave-in-this-order + +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}Connexus forsitan amissus +STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION :{WHITE}In {NUM} prior{P e ibus} secund{P o is} nulla data ab servatro accipitur + +# Network related errors +STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} +############ Leave those lines in this order!! +STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Ludus intermissus ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Ludus adhuc intermissus ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Ludus adhuc intermissus ({STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Ludus adhuc intermissus ({STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Ludus adhuc intermissus ({STRING}, {STRING}, {STRING}, {STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Ludus resumptus ({STRING}) +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :numerus lusorum +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :lusores coniungentes +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :a lusore +STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :a ludi scripto +############ End of leave-in-this-order +STR_NETWORK_MESSAGE_CLIENT_LEAVING :exiens +STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ludum iungit +STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} ludum iungit (Cliens #{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} iungit societatem #{2:NUM} +STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} spectatores iungit +STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} novam societatem incipit (#{2:NUM}) +STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ludum disiungit ({2:STRING}) +STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} nomen suum mutat ad {STRING} +STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} tuae societati largitur {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Largiris {1:STRING} {2:CURRENCY_LONG} +STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Servatrum iam clausum est +STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Servatrum resumit...{}Maneas... + +# Content downloading window +STR_CONTENT_TITLE :{WHITE}Arcessitus Rerum +STR_CONTENT_TYPE_CAPTION :{BLACK}Typus +STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Typus rei +STR_CONTENT_NAME_CAPTION :{BLACK}Nomen +STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Nomen rei +STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Preme in lineam ut indicia monstretur{}Preme in quadrum ut res eligatur ad arcessendum +STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Omnes eligere +STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Signare omnes res arcessendas esse +STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Eligere novas editiones +STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Signare omnes editiones noviores quam eas quas iam habes arcessendas esse +STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Nullas eligere +STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Signare nullam rem arcessendam esse +STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Quaerere situs externos +STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Quaerere res in aliis sitibus interretialibus non in inventario OpenTTD parabiles +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}OpenTTD exiens es! +STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Condiciones res arcessendi ex sitibus externis sunt variae.{}Necesse est tibi inspicere eos situs et quaerere institutionem quomodo res imponatur intra OpenTTD.{}Visne pergere? +STR_CONTENT_FILTER_TITLE :{BLACK}Colum nominis: +STR_CONTENT_OPEN_URL :{BLACK}Ire ad situm interretialem +STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Ire ad situm huius rei +STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Arcessere +STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Incipere arcessere res electas +STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Magnitudo cuncti arcessitus: {WHITE}{BYTES} +STR_CONTENT_DETAIL_TITLE :{SILVER}INDICIA REI +STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Non optavisti hanc rem arcessendam esse +STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Optavisti hanc rem arcessendam esse +STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Hic ambactus optatus est arcessendus +STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Iam hanc rem habes +STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Haec res ignota est ac non potest arcessi in OpenTTD +STR_CONTENT_DETAIL_UPDATE :{SILVER}H{G ic aec oc i ae aec} est nova editio veteris {STRING.gen} +STR_CONTENT_DETAIL_NAME :{SILVER}Nomen: {WHITE}{STRING} +STR_CONTENT_DETAIL_VERSION :{SILVER}Editio: {WHITE}{STRING} +STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Descriptio: {WHITE}{STRING} +STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING} +STR_CONTENT_DETAIL_TYPE :{SILVER}Typus: {WHITE}{STRING} +STR_CONTENT_DETAIL_FILESIZE :{SILVER}Magnitudo arcessus: {WHITE}{BYTES} +STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Electa propter: {WHITE}{STRING} +STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Ambacti: {WHITE}{STRING} +STR_CONTENT_DETAIL_TAGS :{SILVER}Notae: {WHITE}{STRING} +STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD compilata est sine "zlib"... +STR_CONTENT_NO_ZLIB_SUB :{WHITE}... itaque non potest ullam rem e rete arcessere! + +# Order of these is important! +STR_CONTENT_TYPE_BASE_GRAPHICS :{G=n}Fundamentum Graphicum +STR_CONTENT_TYPE_BASE_GRAPHICS.gen :{G=n}Fundamenti Graphici +STR_CONTENT_TYPE_NEWGRF :{G=n}NewGRF +STR_CONTENT_TYPE_NEWGRF.gen :{G=n}NewGRF +STR_CONTENT_TYPE_AI :{G=f}IA +STR_CONTENT_TYPE_AI.gen :{G=f}IA +STR_CONTENT_TYPE_AI_LIBRARY :{G=f}Bibliotheca IA +STR_CONTENT_TYPE_AI_LIBRARY.gen :{G=f}Bibliothecae IA +STR_CONTENT_TYPE_SCENARIO :{G=n}Scaenarium +STR_CONTENT_TYPE_SCENARIO.gen :{G=n}Scaenarii +STR_CONTENT_TYPE_HEIGHTMAP :{G=f}Tabula Altitudinum +STR_CONTENT_TYPE_HEIGHTMAP.gen :{G=f}Tabulae Altitudinum +STR_CONTENT_TYPE_BASE_SOUNDS :{G=n}Fundamentum Sonicum +STR_CONTENT_TYPE_BASE_SOUNDS.gen :{G=n}Fundamenti Sonici +STR_CONTENT_TYPE_BASE_MUSIC :{G=n}Fundamentum Musicum +STR_CONTENT_TYPE_BASE_MUSIC.gen :{G=n}Fundamenti Musici +STR_CONTENT_TYPE_GAME_SCRIPT :{G=n}Ludi Scriptum +STR_CONTENT_TYPE_GAME_SCRIPT.gen :{G=n}Ludi Scripti +STR_CONTENT_TYPE_GS_LIBRARY :{G=f}Bibliotheca Ludi Scriptorum +STR_CONTENT_TYPE_GS_LIBRARY.gen :{G=f}Bibliothecae Ludi Scriptorum + +# Content downloading progress window +STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Res arcessens... +STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Fasciculos requirens... +STR_CONTENT_DOWNLOAD_FILE :{WHITE}Arcessens {STRING} ({NUM} ex {NUM}) +STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Transmissio completa +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} ex {BYTES} arcessita ({NUM} %) + +# Content downloading error messages +STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Non poterat iungere ad rerum servatrum... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Transmissio defecit... +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... connexus amissus +STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... fasciculus non scriptabilis +STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Non poterat fasciculum arcessitum decomprimere + +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Graphica absenta +STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD graphica requirit sed nulla inventa sunt. Permittisne OpenTTD arcessere et imponere haec graphica? +STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ita, arcessere graphica +STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Non, OpenTTD exire + +# Transparency settings window +STR_TRANSPARENCY_CAPTION :{WHITE}Optiones Perluciditatis +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Mutare perluciditatem signorum. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Mutare perluciditatem arborum. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Mutare perluciditatem aedificiorum. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Mutare perluciditatem industriarum. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Mutare perluciditatem structurarum sicut stationes, receptacula, et interloci. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Mutare perluciditatem pontium. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Mutare perluciditatem ornamentorum sicut phari et emissoria. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Mutare perluciditatem catenariae. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Mutare perluciditatem signorum onerandi. Ctrl+Preme ut figatur (non mutabitur globulo perluciditatem mutandi presso) +STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Facere ut res invisibles sint, non tantum perlucidae + +# Linkgraph legend window +STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Formula Graphica Onerum Cursus +STR_LINKGRAPH_LEGEND_ALL :{BLACK}Omnia +STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nulla +STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Eligere societates monstrandas + +# Linkgraph legend window and linkgraph legend in smallmap +STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}non usus +STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}satur +STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}superoneratus + +# Base for station construction window(s) +STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Regio Acceptionis +STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Celata +STR_STATION_BUILD_COVERAGE_ON :{BLACK}Ostensa +STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}Haud ostendere regionem acceptionis loci struendi +STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Ostendere regionem acceptionis loci struendi +STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Accipiuntur: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Produntur: {GOLD}{CARGO_LIST} + +# Join station window +STR_JOIN_STATION_CAPTION :{WHITE}Iungere stationem +STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Struere discretam stationem + +STR_JOIN_WAYPOINT_CAPTION :{WHITE}Iungere interlocum +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Struere discretum interlocum + +# Rail construction toolbar +STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Constructio Ferriviarum +STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Constructio Electricarum Ferriviarum +STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :Constructio Monoorbitarum +STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Constructio Maglev + +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Struere ferriviam. Ctrl mutat inter ferrivias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Struere ferriviam automatico modo. Ctrl mutat inter ferrivias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Struere receptaculum hamaxostichorum (ad hamaxostichos ministrandos ac emendos). Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Struere interlocum ferriviarium. Ctrl pressa, interloci iungendi essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Struere stationem ferriviariam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Struere signalia ferriviaria. Ctrl mutat inter semaphora et signalia electrica{}Constuctio trahendo struit signalia in lineam; Ctrl+trahendo signalia struit usque ad compitum signaleve secundum{}Ctrl+Preme ut fenestra signalium ostendatur celeturve. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Struere pontem ferriviarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Struere cuniculum ferriviarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Mutare inter ferrivias, signalia, interlocos, et stationes struendas/removendas. Ctrl pressa, etiam astaria interlocorum stationumque removenda sunt. +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Mutare typum astarii. Shift mutat inter constructionem et aestimationem monstrandam + +STR_RAIL_NAME_RAILROAD :Ferrivia +STR_RAIL_NAME_RAILROAD.gen :Ferriviarium +STR_RAIL_NAME_ELRAIL :Ferrivia electrica +STR_RAIL_NAME_ELRAIL.gen :Electricum Ferriviarium +STR_RAIL_NAME_MONORAIL :Monoorbita +STR_RAIL_NAME_MONORAIL.gen :Monoorbitarium +STR_RAIL_NAME_MAGLEV :Maglev +STR_RAIL_NAME_MAGLEV.gen :Maglev + +# Rail depot construction window +STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Directio Receptaculi Hamaxostichorum +STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem receptaculi hamaxostichorum + +# Rail waypoint construction window +STR_WAYPOINT_CAPTION :{WHITE}Interlocus +STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Eligere typum interloci + +# Rail station construction window +STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Electio Ferriviariae Stationis +STR_STATION_BUILD_ORIENTATION :{BLACK}Directio +STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem ferriviae stationis +STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Numerus suggestuum +STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Eligere numerum suggestuum ferriviae stationis +STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Longitudo suggestuum +STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Eligere longitudinem ferriviae stationis +STR_STATION_BUILD_DRAG_DROP :{BLACK}Trahere Ponereque +STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Struere stationem trahendo ponendoque + +STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Eligere classem stationum monstrandam +STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Eligere typum stationis struendum + +STR_STATION_CLASS_DFLT :Statio solita +STR_STATION_CLASS_WAYP :Interloci + +# Signal window +STR_BUILD_SIGNAL_CAPTION :{WHITE}Electio Signalium +STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Signale Zonale (semaphoricum){}Hoc est signale simplicissimum, tantum unum tramen licet inesse inter signalia zonalia +STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Signale Aditus (semaphoricum){}Viride est dum est signale viride exitus in astariis sequentibus. Alioquin rubrum est +STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Signale Exitus (semaphoricum){}Agit sicut signale zonale sed necesse est signalibus compositis aditusque +STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Signale Compositum (semaphoricum){}Signale compositum agit sicut et aditus et exitus signale. Igitur potes facere magnas "arbores" signalium +STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Signale Itineris (semaphoricum){}Signale itineris sinit plura tramina inire intra signalia eodem tempore, si tramen potest reservare iter ad destinatum tutum. Signalia itineris usitata possunt transiri a tergo +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Signale Itineris Unius Cursus (semaphoricum){}Signale itineris sinit plura tramina inire intra signalia eodem tempore, si tramen potest reservare iter ad destinatum tutum. Signalia itineris unius cursus non possunt transiri a tergo +STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Signale Zonale (electricum){}Hoc est signale simplicissimum, tantum unum tramen licet inesse inter signalia zonalia +STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Signale Aditus (electricum){}Viride est dum est signale viride exitus in astariis sequentibus. Alioquin rubrum est +STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Signale Exitus (electricum){}Agit sicut signale zonale sed necesse est signalibus compositis aditusque +STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Signale Compositum (electricum){}Signale compositum agit sicut et aditus et exitus signale. Igitur potes facere magnas "arbores" signalium +STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Signale Itineris (electricum){}Signale itineris sinit plura tramina inire intra signalia eodem tempore, si tramen potest reservare iter ad destinatum tutum. Signalia itineris usitata possunt transiri a tergo +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Signale Itineris Unius Cursus (electricum){}Signale itineris sinit plura tramina inire intra signalia eodem tempore, si tramen potest reservare iter ad destinatum tutum. Signalia itineris unius cursus non possunt transiri a tergo +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Mutare Signalia{}Electa, pressio in signale facit ut mutetur in novum typum electum. Ctrl+Preme ut signale mutetur inter semaphoricum et electricum. Shift mutat inter mutationem et aestimationem monstrandam +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densitas signalia trahendi +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Minuere densitatem signalia trahendi +STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Augere densitatem signalia trahendi + +# Bridge selection window +STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Eligere Pontem Ferriviarium +STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Eligere Pontem Viarium +STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Electio pontium - preme in pontem delectum ut struatur +STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} +STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} +STR_BRIDGE_NAME_SUSPENSION_STEEL :Pendulus, Chalybeius +STR_BRIDGE_NAME_GIRDER_STEEL :Trabum, Chalybeius +STR_BRIDGE_NAME_CANTILEVER_STEEL :Prominens, Chalybeius +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Pendulus, Caementicius +STR_BRIDGE_NAME_WOODEN :Ligneus +STR_BRIDGE_NAME_CONCRETE :Caementicius +STR_BRIDGE_NAME_TUBULAR_STEEL :Tubulorum, Chalybeius +STR_BRIDGE_TUBULAR_SILICON :Tubulorum, Silicii + + +# Road construction toolbar +STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Constructio Viarum +STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Constructio Ferriviarum Stratarium +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Struere viam. Ctrl mutat inter vias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Struere ferriviam stratariam. Ctrl mutat inter struendum/removendum. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Struere partem viae automatico modo. Ctrl mutat inter vias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Struere ferriviam stratariam automatico modo. Ctrl mutat inter ferrivias struendas/removendas. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Struere receptaculum viarium (ad vehicula viaria ministranda ac emenda). Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Struere receptaculum transviarium (ad raedas transviarias ministrandas ac emendas). Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Struere stationem laophoricam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Struere stationem transviariam vectoriam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Struere stationem autoplaustricam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Struere stationem transviariam onerariam. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Monodromus adhibendus/non adhibendus +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_BRIDGE :{BLACK}Struere pontem viarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_BRIDGE :{BLACK}Struere pontem transviarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Struere cuniculum viarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Struere cuniculum transviarium. Shift mutat inter constructionem et aestimationem monstrandam +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Mutare inter vias struendas/removendas +STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Mutare inter ferrivias stratarias struendas/removendas + +# Road depot construction window +STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Directio receptaculi viarii +STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Eligere directionem receptaculi viarii +STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Directio receptaculi transviarii +STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Eligere directionem receptaculi transviarii + +# Road vehicle station construction window +STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Directio stationis laophoricae +STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem stationis laophoricae +STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Directio stationis autoplaustricae +STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem stationis autoplaustricae +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Directio stationis transviariae vectoriae +STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem stationis transviariae vectoriae +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Directio stationis transviariae onerariae +STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem stationis transviariae onerariae + +# Waterways toolbar (last two for SE only) +STR_WATERWAYS_TOOLBAR_CAPTION :{WHITE}Constructio Viarum Aquarium +STR_WATERWAYS_TOOLBAR_CAPTION_SE :{WHITE}Viae Aquariae +STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}Struere canales. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUILD_LOCKS_TOOLTIP :{BLACK}Struere cataracta. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP :{BLACK}Struere receptaculum navium (ad naves emendas ac ministrandas). Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP :{BLACK}Struere navale. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP :{BLACK}Ponere signum monitorium quod interlocus potest esse. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_BUILD_AQUEDUCT_TOOLTIP :{BLACK}Struere aquae ductum. Shift mutat inter constructionem et aestimationem monstrandam +STR_WATERWAYS_TOOLBAR_CREATE_LAKE_TOOLTIP :{BLACK}Delineare aquae spatium.{}Ponere canalem. Si Ctrl premitur in libra maris, facit ut circumiectum inundetur +STR_WATERWAYS_TOOLBAR_CREATE_RIVER_TOOLTIP :{BLACK}Ponere fluvios + +# Ship depot construction window +STR_DEPOT_BUILD_SHIP_CAPTION :{WHITE}Directio receptaculi navium +STR_DEPOT_BUILD_SHIP_ORIENTATION_TOOLTIP :{BLACK}Eligere directionem receptaculi navium + +# Dock construction window +STR_STATION_BUILD_DOCK_CAPTION :{WHITE}Navale + +# Airport toolbar +STR_TOOLBAR_AIRCRAFT_CAPTION :{WHITE}Aeroportus +STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Struere aeroportum. Ctrl pressa, stationes iungendae essent. Shift mutat inter constructionem et aestimationem monstrandam + +# Airport construction window +STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Electio aeroportuum +STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Eligere typum aeroportus +STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Typus aeroportus +STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Dispositio {NUM} + +STR_AIRPORT_SMALL :Parvus +STR_AIRPORT_CITY :Urbanus +STR_AIRPORT_METRO :Metropolitanus +STR_AIRPORT_INTERNATIONAL :Internationalis +STR_AIRPORT_COMMUTER :Suburbanus +STR_AIRPORT_INTERCONTINENTAL :Intercontinentalis +STR_AIRPORT_HELIPORT :Helicopterarium +STR_AIRPORT_HELIDEPOT :Heliportus +STR_AIRPORT_HELISTATION :Helistatio + +STR_AIRPORT_CLASS_SMALL :Aeroportus parvi +STR_AIRPORT_CLASS_LARGE :Aeroportus magni +STR_AIRPORT_CLASS_HUB :Aeroportus amplissimi +STR_AIRPORT_CLASS_HELIPORTS :Heliportus + +STR_STATION_BUILD_NOISE :{BLACK}Sonitus factus: {GOLD}{COMMA} + +# Landscaping toolbar +STR_LANDSCAPING_TOOLBAR :{WHITE}Plasmatio Terrae +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Inclinare angulum terrae. Dum trahitur, primus angulus electus inclinatur deinde area electa levigatur ad altitudinem primi anguli inclinati. Ctrl diagonaliter eligit. Shift mutat inter plasmationem et aestimationem monstrandam +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Tollere angulum terrae. Dum trahitur, primus angulus electus tollitur deinde area electa levigatur ad altitudinem primi anguli sublati. Ctrl diagonaliter eligit. Shift mutat inter plasmationem et aestimationem monstrandam +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Levigare terram ad altitudinem primi anguli electi. Ctrl diagonaliter eligit. Shift mutat inter plasmationem et aestimationem monstrandam +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Emere terram utendam. Shift mutat inter constructionem et aestimationem monstrandam + +# Object construction window +STR_OBJECT_BUILD_CAPTION :{WHITE}Electio ornamentorum +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Eligere ornamentum struendum. Shift mutat inter constructionem et aestimationem monstrandam +STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Eligere classem ornamenti struendi +STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Praevisum ornamenti +STR_OBJECT_BUILD_SIZE :{BLACK}Magnitudo: {GOLD}{NUM} x {NUM} tegulae + +STR_OBJECT_CLASS_LTHS :Phari +STR_OBJECT_CLASS_TRNS :Emissoria + +# Tree planting window (last two for SE only) +STR_PLANT_TREE_CAPTION :{WHITE}Arbores +STR_PLANT_TREE_TOOLTIP :{BLACK}Eligere arborem serendam. Si tegula iam arborem habet, plures arbores fortuitas addentur (forsitan non idem typus arboris) +STR_TREES_RANDOM_TYPE :{BLACK}Arbor fortuita +STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Ponere atbores fortuitas. Shift mutat inter constructionem et aestimationem monstrandam +STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Arbores fortuitae +STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Serere arbores fortuitas per terram + +# Land generation window (SE) +STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Plasmatio Terrae +STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Ponere locos saxosos in terra +STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Definire spatium desertum.{}Ctrl pressa, desertum removeatur +STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Augere spatium terrae inclinandae/tollendae +STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Minuere spatium terrae inclinandae/tollendae +STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Creare terram forte +STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Novum scaenarium creare +STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Reponere terram +STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Removere omnes societatis possessiones + +STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Reponere terram +STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Esne certus te velle omnes societatis possessiones removere? + +# Town generation window (SE) +STR_FOUND_TOWN_CAPTION :{WHITE}Conditus Oppidorum +STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Novum Oppidum +STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Condere novum oppidum. Shift mutat inter constructionem et aestimationem monstrandam +STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Oppidum Fortuitum +STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Condere oppidum in loco fortuito +STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Plura Oppida Fortuita +STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Condere oppida fortuita per tabulam + +STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nomen Oppidi: +STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Inscribe nomen oppidi +STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Preme ut oppidi nomen inscribas +STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Nomen fortuitum +STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Creare novum nomen fortuitum + +STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Magnitudo oppidi: +STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Parva +STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mediocris +STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Magna +STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Fortuita +STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Eligere magnitudinem oppidi +STR_FOUND_TOWN_CITY :{BLACK}Urbs +STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Urbes crescunt oppidis celerius{}Etiam maiores sunt cum conduntur + +STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Dispositio viarum oppidi: +STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Eligere dispositionem viarum huic oppido adhibendam +STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Originalis +STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Viae satius +STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Cancelli 2x2 +STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Cancelli 3x3 +STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Fortuita + +# Fund new industry window +STR_FUND_INDUSTRY_CAPTION :{WHITE}Condere novam industriam +STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Eligere industriam ex indice +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Plures industrae fortuitae +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Serere industrias fortuitas per tabulam +STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Pretium: {YELLOW}{CURRENCY_LONG} +STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospicere +STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Struere +STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Condere + +# Industry cargoes window +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Catena industrialis {STRING.gen} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Catena industrialis {STRING.gen} +STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Industriae producentes +STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Industriae accipientes +STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Aedificia Oppidorum +STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Preme in industriam ut monstrentur praebitores emptoresque eius +STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Preme in onus ut monstrentur praebitores emptoresque eius +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Ostendere catenam +STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Ostendere onera, praebitores, ac emptores huius industriae +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Connectere ad tabulam parvam +STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Etiam monstrare industrias aptas in parva tabula +STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Onus eligere +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Eligere onus monstrandum +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Industriam eligere +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Eligere industriam monstrandam + +# Land area window +STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Indicia Terrae Regionis +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Pretium vacuefaciendi: {LTBLUE}N/A +STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Pretium vacuefaciendi: {RED}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Reditus vacuefaciendi: {LTBLUE}{CURRENCY_LONG} +STR_LAND_AREA_INFORMATION_OWNER_N_A :N/A +STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Possessor: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Possessor viae: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Possessor ferriviae stratariae: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Possessor ferriviae: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Auctoritas vicinalis: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nulla +STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordinatae: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Dies struendi: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classis stationis: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Typus stationis: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Typus aeroportus: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Nomen aeroportus: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nomen tegulae aeroportus: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} +STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Onera accepta: {LTBLUE} +STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) +STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Velocitas maxima ferriviae: {LTBLUE}{VELOCITY} +STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Velocitas maxima viae: {LTBLUE}{VELOCITY} + +# Description of land area of different tiles +STR_LAI_CLEAR_DESCRIPTION_ROCKS :Saxa +STR_LAI_CLEAR_DESCRIPTION_ROUGH_LAND :Terra Aspera +STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :Terra Nuda +STR_LAI_CLEAR_DESCRIPTION_GRASS :Herba +STR_LAI_CLEAR_DESCRIPTION_FIELDS :Agri +STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Terra Nivea +STR_LAI_CLEAR_DESCRIPTION_DESERT :Deserta + +STR_LAI_RAIL_DESCRIPTION_TRACK :Astarium {STRING.gen} +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Astarium {STRING.gen} cum signalibus zonalibus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Astarium {STRING.gen} cum signalibus aditus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Astarium {STRING.gen} cum signalibus exitus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Astarium {STRING.gen} cum signalibus compositis +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Astarium {STRING.gen} cum signalibus itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et aditus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et exitus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et compositis +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus zonalibus et itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Astarium {STRING.gen} cum signalibus aditus et exitus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Astarium {STRING.gen} cum signalibus aditus et compositis +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Astarium {STRING.gen} cum signalibus aditus et itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus aditus et itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Astarium {STRING.gen} cum signalibus exitus et compositis +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Astarium {STRING.gen} cum signalibus exitus et itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus exitus et itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Astarium {STRING.gen} cum signalibus compositis et itineris +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus compositis et itineris unius cursus +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Astarium {STRING.gen} cum signalibus itineris et unius cursus itineris +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Receptaculum {STRING.gen} + +STR_LAI_ROAD_DESCRIPTION_ROAD :Via +STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Via cum lampadibus +STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Via arborata +STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Receptaculum viarium +STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Transitus ferriviarius +STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Ferrivia strataria + +# Houses come directly from their building names +STR_LAI_TOWN_INDUSTRY_DESCRIPTION_UNDER_CONSTRUCTION :{STRING} (adhuc construitur) + +STR_LAI_TREE_NAME_TREES :Arbores +STR_LAI_TREE_NAME_RAINFOREST :Silva pluvialis +STR_LAI_TREE_NAME_CACTUS_PLANTS :Cacti + +STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :Statio ferriviaria +STR_LAI_STATION_DESCRIPTION_AIRCRAFT_HANGAR :Tugurium +STR_LAI_STATION_DESCRIPTION_AIRPORT :Aeroportus +STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Statio autoplaustrica +STR_LAI_STATION_DESCRIPTION_BUS_STATION :Statio laophorica +STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Navale +STR_LAI_STATION_DESCRIPTION_BUOY :Signum monitorium +STR_LAI_STATION_DESCRIPTION_WAYPOINT :Interlocus + +STR_LAI_WATER_DESCRIPTION_WATER :Aqua +STR_LAI_WATER_DESCRIPTION_CANAL :Canalis +STR_LAI_WATER_DESCRIPTION_LOCK :Cataracta +STR_LAI_WATER_DESCRIPTION_RIVER :Flumen +STR_LAI_WATER_DESCRIPTION_COAST_OR_RIVERBANK :Littus vel ripa +STR_LAI_WATER_DESCRIPTION_SHIP_DEPOT :Receptaculum Navium + +# Industries come directly from their industry names + +STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Ferriviae cuniculus +STR_LAI_TUNNEL_DESCRIPTION_ROAD :Viae cuniculus + +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Pons ferriviarius pendulus chalybeius +STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Pons ferriviarius trabum chalybeius +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Pons ferriviarius prominens chalybeius +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Pons ferriviarius pendulus caementicius ferratus +STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Pons ferriviarius ligneus +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Pons ferriviarius caementicius +STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Pons ferriviarius tubulorum + +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Pons viarius pendulus chalybeius +STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Pons viarius trabibus chalybeius +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Pons viarius prominens chalybeius +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Pons viarius pendulus caementicius ferratus +STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Pons viarius ligneus +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Pons viarius caementicius +STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Pons viarius tubulorum + +STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Aquae ductus + +STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Emissorium +STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Pharus +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Sedes primaria societatis +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terra societatis + +# About OpenTTD window +STR_ABOUT_OPENTTD :{WHITE}De OpenTTD +STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Privilegium impressorium originale {COPYRIGHT} MCMXCV Chris Sawyer, Omnia proprietatis iura reservantur +STR_ABOUT_VERSION :{BLACK}OpenTTD editio {REV} +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} MMII-MMXV Manus OpenTTD + +# Save/load game/scenario +STR_SAVELOAD_SAVE_CAPTION :{WHITE}Servare Ludum +STR_SAVELOAD_LOAD_CAPTION :{WHITE}Legere Ludum +STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Servare Scaenarium +STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Legere Scaenarium +STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Legere tabulam altitudinum +STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Servare tabulam altitudinum +STR_SAVELOAD_HOME_BUTTON :{BLACK}Preme ut salias ad currens directorium solitum servandi/legendi +STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} reliqua +STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Index discorum, directoriorum, et ludorum servatorum +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nomen electum ludo servato +STR_SAVELOAD_DELETE_BUTTON :{BLACK}Delere +STR_SAVELOAD_DELETE_TOOLTIP :{BLACK}Delere ludum electum +STR_SAVELOAD_SAVE_BUTTON :{BLACK}Servare +STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Servare ludum currentem nomine electo +STR_SAVELOAD_LOAD_BUTTON :{BLACK}Legere +STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Legere ludum electum +STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Legere tabulam altitudinum electam +STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludi indicia +STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nulla indicia parabilia +STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} +STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} + +STR_SAVELOAD_OSKTITLE :{BLACK}Inscribe nomen ludi + +# World generation +STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Creatio Orbis Terrarum +STR_MAPGEN_MAPSIZE :{BLACK}Tabulae magnitudo: +STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Eligere magnitudinem tegularum tabulae geographicae. Tegulae parabiles fere minores erunt +STR_MAPGEN_BY :{BLACK}* +STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Numerus oppidorum: +STR_MAPGEN_DATE :{BLACK}Dies: +STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Numerus industriarum: +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altitudo tabulae maxima: +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Augere maximam altitudinem montium in tabula unum gradum +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Minuere maximam altitudinem montium in tabula unum gradum +STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Altitudo nivis lineae: +STR_MAPGEN_SNOW_LINE_UP :{BLACK}Tollere altitudinem lineae nivis +STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Inclinere altitudinem lineae nivis +STR_MAPGEN_LAND_GENERATOR :{BLACK}Generatrum terrae: +STR_MAPGEN_TREE_PLACER :{BLACK}Algorithmus arbores ponendi: +STR_MAPGEN_TERRAIN_TYPE :{BLACK}Typus terrae: +STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Magnitudo maris: +STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Numerus fluviorum: +STR_MAPGEN_SMOOTHNESS :{BLACK}Lenitas: +STR_MAPGEN_VARIETY :{BLACK}Partitio Varietatis: +STR_MAPGEN_GENERATE :{WHITE}Creare + +# Strings for map borders at game generation +STR_MAPGEN_BORDER_TYPE :{BLACK}Fines tabulae: +STR_MAPGEN_NORTHWEST :{BLACK}Corus +STR_MAPGEN_NORTHEAST :{BLACK}Eurus +STR_MAPGEN_SOUTHEAST :{BLACK}Aquilo +STR_MAPGEN_SOUTHWEST :{BLACK}Africus +STR_MAPGEN_BORDER_FREEFORM :{BLACK}Quilibet +STR_MAPGEN_BORDER_WATER :{BLACK}Aqua +STR_MAPGEN_BORDER_RANDOM :{BLACK}Fortuiti +STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Fortuiti +STR_MAPGEN_BORDER_MANUAL :{BLACK}Manu + +STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Circuitus tabulae altitudinum: +STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nomen tabulae altitudinum: +STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Magnitudo: +STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} + +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Mutare altitudinem tabulae maximam +STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Mutare altitudinem lineae nivis +STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mutare annum initii + +# SE Map generation +STR_SE_MAPGEN_CAPTION :{WHITE}Typus Scaenarii +STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Terra plana +STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Creare terram planam +STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Terrae fortuitae +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Altitudo terrae planae: +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Inclinere altitudinem terram planam +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Tollere altitudinem terram planam + +STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Mutare altitudinem planae terrae + +# Map generation progress +STR_GENERATION_WORLD :{WHITE}Mundum Plasmans... +STR_GENERATION_ABORT :{BLACK}Desinere +STR_GENERATION_ABORT_CAPTION :{WHITE}Desinere Creationem Mundi +STR_GENERATION_ABORT_MESSAGE :{YELLOW}Esne certus te velle desinere creationem? +STR_GENERATION_PROGRESS :{WHITE}{NUM}% factum +STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} +STR_GENERATION_WORLD_GENERATION :{BLACK}Creatio orbis terrarum +STR_GENERATION_RIVER_GENERATION :{BLACK}Creatio fluminum +STR_GENERATION_TREE_GENERATION :{BLACK}Creatio arborum +STR_GENERATION_OBJECT_GENERATION :{BLACK}Creatio ornamentorum +STR_GENERATION_CLEARING_TILES :{BLACK}Creatio terrarum saxosarum asperarumque +STR_GENERATION_SETTINGUP_GAME :{BLACK}Ludum instruens +STR_GENERATION_PREPARING_TILELOOP :{BLACK}Tegularum cursum exsequens +STR_GENERATION_PREPARING_SCRIPT :{BLACK}Scriptum exsequens +STR_GENERATION_PREPARING_GAME :{BLACK}Ludum parans + +# NewGRF settings +STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Optiones NewGRF +STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Indicia NewGRF descripta +STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Fasciculi NewGRF activi +STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Fasciculi NewGRF inactivi +STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Eligere rationem: +STR_NEWGRF_FILTER_TITLE :{ORANGE}Series colans: +STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Legere rationem electam +STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Servare rationem +STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}Servare hanc indicem rationi +STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY :{BLACK}Inscribere nomen rationis +STR_NEWGRF_SETTINGS_PRESET_DELETE :{BLACK}Delere rationem +STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP :{BLACK}Delere rationem electam +STR_NEWGRF_SETTINGS_ADD :{BLACK}Addere +STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP :{BLACK}Addere fasciculum NewGRF electum configurationi tuae +STR_NEWGRF_SETTINGS_RESCAN_FILES :{BLACK}Iterum quaerere fasciculos +STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP :{BLACK}Recensere indicem fasciculorum NewGRF +STR_NEWGRF_SETTINGS_REMOVE :{BLACK}Removere +STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP :{BLACK}Removere fasciculum NewGRF electum ex indice +STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Sursum Movere +STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Movere fasciculum NewGRF electum sursum in indice +STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Deosrum Movere +STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Movere fasciculum NewGRF electum deorsum in indice +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Imponere novas editiones +STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Imponere eos fasciculos NewGRF qui novior sunt +STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Index fasciculorum NewGRF qui sunt impositi + +STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Eligere parametra +STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Monstrare parametra +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Mutare coloris tabulam +STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Mutare coloris tabulam huius NewGRF.{}Utere cum colores huius NewGRF videntur esse rosei +STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Confirmare mutationes + +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Quaere res absentes in interrete +STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP :{BLACK}Inspicere si res absentes in inventario Interretiale sunt + +STR_NEWGRF_SETTINGS_FILENAME :{BLACK}Nomen fasciculi: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_GRF_ID :{BLACK}Agnoscamentum GRF: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_VERSION :{BLACK}Editio: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Editio congrua minima: {SILVER}{NUM} +STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Coloris tabula: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametra: {SILVER}{STRING} + +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Nulla indicia parabilia +STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Par fasciculus non inventus +STR_NEWGRF_SETTINGS_DISABLED :{RED}Neglectum +STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatibilis est huic OpenTTD editioni + +# NewGRF save preset window +STR_SAVE_PRESET_CAPTION :{WHITE}Servare rationem +STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Index rationum. Unam elige ut transcribatur nomini infero +STR_SAVE_PRESET_TITLE :{BLACK}Inscribe nomen rationis +STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Nomen electum rationis conservandum +STR_SAVE_PRESET_CANCEL :{BLACK}Cancellare +STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Non mutare rationem +STR_SAVE_PRESET_SAVE :{BLACK}Servare +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Rationem conservare huic nomini + +# NewGRF parameters window +STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Mutare parametra NewGRF +STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Claudere +STR_NEWGRF_PARAMETERS_RESET :{BLACK}Redire +STR_NEWGRF_PARAMETERS_RESET_TOOLTIP :{BLACK}Facere ut quodque parametrum solito reversum sit +STR_NEWGRF_PARAMETERS_DEFAULT_NAME :Parametrum {NUM} +STR_NEWGRF_PARAMETERS_SETTING :{STRING}: {ORANGE}{STRING} +STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Numerus parametrorum: {ORANGE}{NUM} + +# NewGRF inspect window +STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspicere - {STRING} +STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Parens +STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspicere obiectum parentis + +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} ad {HEX} +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Obiectum +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Typus ferriviae + +STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}NewGRF var 60+x parametrum (sedecimale) + +# Sprite aligner window +STR_SPRITE_ALIGNER_CAPTION :{WHITE}Dirigens spiritum {COMMA} ({STRING}) +STR_SPRITE_ALIGNER_NEXT_BUTTON :{BLACK}Spiritum secundum +STR_SPRITE_ALIGNER_NEXT_TOOLTIP :{BLACK}Procedere ad spiritum naturalem secundum et, termino contacto, ad primum revertere +STR_SPRITE_ALIGNER_GOTO_BUTTON :{BLACK}Ire ad spiritum +STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Ire ad spiritum electum. Si spiritus non naturalis sit, procedere ad secundum spiritum naturalem +STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Spiritum priorem +STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Ire ad spiritum naturalem priorem et, termino contacto, ad ultimum revertere +STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Imago spiritus electi. Directio neglegitur cum hic spiritus pingitur +STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Movere spiritum mutatione X et Y incrementa +STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Eligere spiritum +STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Eligere spiritum e scrinio + +STR_SPRITE_ALIGNER_GOTO_CAPTION :{WHITE}Ire ad spiritum + +# NewGRF (self) generated warnings/errors +STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_WARNING :{RED}Cautio: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_ERROR :{RED}Error: {SILVER}{STRING} +STR_NEWGRF_ERROR_MSG_FATAL :{RED}Error Fatalis: {SILVER}{STRING} +STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}Error NewGRF fatalis: {}{STRING} +STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} non operat apud editionem TTDPatch ab OpenTTD dicta +STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} spectat ad editionem {STRING} TTD +STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} spectat ad {STRING} +STR_NEWGRF_ERROR_INVALID_PARAMETER :Parametrum irritum {1:STRING}: parametrum {STRING} ({NUM}) +STR_NEWGRF_ERROR_LOAD_BEFORE :Necesse est {1:STRING} legere ante {STRING} +STR_NEWGRF_ERROR_LOAD_AFTER :Necesse est {1:STRING} legere post {STRING} +STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} poscit editionem OpenTTD {STRING} sive maiorem +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :fasciculum GRF cui designatus est transferre +STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Nimis NewGRF lecta sunt +STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Lectio {1:STRING} ut NewGRF fixum cum {STRING} potest desynchronizare +STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Spiritus repens (spiritus {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Obiectum Actionis 0 ignotum {4:HEX} (spiritus {3:NUM}) +STR_NEWGRF_ERROR_INVALID_ID :Conatus agnoscamento irrito uti (spiritus {3:NUM}) +STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} spiritum corruptum habet. Omnes spiritus corrupti monstrabuntur forma rubro puncto interrogativo - ? +STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Continet plures Actiones 8 (spiritus {3:NUM}) +STR_NEWGRF_ERROR_READ_BOUNDS :Lectio post terminum pseudospiritus (spiritus {3:NUM}) +STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Fundamento graphico adhibito deest nonulli spiritus.{}Utinam arcessas novam editionem +STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Fundamento graphico adhibito deest nonulli spiritus.{}Utinam arcessas novam editionem.{}Quoniam ludis {YELLOW}editionem OpenTTD adhuc in explicando{WHITE}, fortasse etiam tibi necesse est {YELLOW}editio fundamenti graphici OpenTTD in explicando{WHITE} +STR_NEWGRF_ERROR_GRM_FAILED :Opes GRF desideratae non parabiles (spiritus {3:NUM}) +STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} neglectus est ab {2:STRING} +STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Irrita/ignota dispositio spiritus (spiritus {3:NUM}) + +# NewGRF related 'general' warnings +STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Maxime Cavendum Est! +STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Ludum euntem mutaturus es. Igitur, ludum corruatur sive OpenTTD frangatur. Noli queri de mendis harum rerum.{}Esne valde certus te pergere velle? + +STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Addere fasciculum non licet nam adest agnoscamentum GRF duplicatum +STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Fasciculus congruus lectus (nam fasciculus idem non inventum fuit) +STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}Addere fasciculum non licet; nimis NewGRF adsunt + +STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Fasciculi congrui lecti in loco fasciculis absentibus +STR_NEWGRF_DISABLED_WARNING :{WHITE}Fasciculi absentes remoti sunt +STR_NEWGRF_UNPAUSE_WARNING_TITLE :{YELLOW}Fasciculi GRF absunt +STR_NEWGRF_UNPAUSE_WARNING :{WHITE}OpenTTD forsitan corruatur resumendo. Noli queri de ruinis sequentibus.{}Esne valde certus te ludum resumere velle? + +# NewGRF status +STR_NEWGRF_LIST_NONE :Nulli +STR_NEWGRF_LIST_ALL_FOUND :Omnes fasciculi adsunt +STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Fasciculi congrui inventi +STR_NEWGRF_LIST_MISSING :{RED}Fasciculi absunt + +# NewGRF 'it's broken' warnings +STR_NEWGRF_BROKEN :{WHITE}NewGRF '{0:STRING}' probabiliter faciet ut ludus desynchronizetur corruaturve +STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Nam mutavit potestatem currus '{1:ENGINE}' extra receptaculum +STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Nam mutavit longitudinem vehiculi '{1:ENGINE}' extra receptaculum +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Nam mutavit capacitatem vehiculi '{1:ENGINE}' extra aut receptaculum aut reficiendum +STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tramen '{VEHICLE}' a '{COMPANY}' posessum longitudinem irritam habet. Probabiliter accidit quod menda sunt in NewGRF. Ludus desynchronizet vel corruat + +STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' affert indicium mendosum +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Indicium oneris/reficiendi '{1:ENGINE}' post constructionem differt eo quod est in indice emptionis. Ergo fortasse autoredemptio/automutatio non possit reficere +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' facit ut versatur ad infinitum in revocatione productionis +STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Revocatio {1:HEX} reddidit conlationem ignotam irritamve {2:HEX} + +# 'User removed essential NewGRFs'-placeholders for stuff without specs +STR_NEWGRF_INVALID_CARGO : +STR_NEWGRF_INVALID_CARGO_ABBREV :?? +STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} +STR_NEWGRF_INVALID_ENGINE : +STR_NEWGRF_INVALID_INDUSTRYTYPE : + +# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script). +STR_INVALID_VEHICLE : + +# NewGRF scanning window +STR_NEWGRF_SCAN_CAPTION :{WHITE}Fasciculos NewGRF inspiciens +STR_NEWGRF_SCAN_MESSAGE :{BLACK}Fasciculos NewGRF inspiciens. Fortasse diu erit si multi fasciculi adsunt... +STR_NEWGRF_SCAN_STATUS :{BLACK}{NUM} NewGRF inspecta ex fere {NUM} NewGRF +STR_NEWGRF_SCAN_ARCHIVES :Fasciculos compressos inspiciens + +# Sign list window +STR_SIGN_LIST_CAPTION :{WHITE}Index Signorum - {COMMA} Sign{P um a} +STR_SIGN_LIST_MATCH_CASE :{BLACK}Sequi casum litterarum +STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Mutare secutionem casus litterarum cum signa comparantur seriei colanti + +# Sign window +STR_EDIT_SIGN_CAPTION :{WHITE}Mutare signum +STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Procedere signo secundo +STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Recedere signo priori + +STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Inscribe nomen signi + +# Town directory window +STR_TOWN_DIRECTORY_CAPTION :{WHITE}Oppida +STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nulla - +STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) +STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nomina oppidorum - preme in nomen ut conspectus supra oppidum locetur. Ctrl+Preme ut novam fenestram conspectus supra oppidum aperiatur +STR_TOWN_POPULATION :{BLACK}Incolae mundi: {COMMA} + +# Town view window +STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} +STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Urbs) +STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Incolae: {ORANGE}{COMMA}{BLACK} Aedificia: {ORANGE}{COMMA} +STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Vectores mensis prioris: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} +STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Epistulae mensis prioris: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Onera mandata ad oppidum crescendum: +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} mandatur +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} hieme mandatur +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} tradit{G 0 us a um i ae a} +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{RED} (adhuc mandat{G 1 us a um i ae a}) +STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (tradit{G 1 us a um i ae a}) +STR_TOWN_VIEW_TOWN_GROWS_EVERY :{BLACK}Oppidum crescit {ORANGE}{COMMA}{BLACK} quoque die +STR_TOWN_VIEW_TOWN_GROWS_EVERY_FUNDED :{BLACK}Oppidum crescit {ORANGE}{COMMA}{BLACK} quoque die (stimulatus) +STR_TOWN_VIEW_TOWN_GROW_STOPPED :{BLACK}Oppidum {RED}non{BLACK} crescit +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Finis soniti in oppido: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} +STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Movere conspectum supra hoc oppidum. Ctrl+Preme ut nova fenestra conspectus aperiatur supra oppidum +STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Auctoritas vicinalis +STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Monstrare indicia auctoritatis vicinalis +STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Mutare nomen oppidi + +STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Augere +STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Augere oppidum +STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Delere +STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Delere omnino hoc oppidum + +STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Renominare Oppidum + +# Town local authority window +STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} Auctoritas vicinalis +STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Censiones societatum: +STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} +STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Actiones parabiles: +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Index rerum in hoc oppido adhibendarum - preme in rem ut indicia rei monstretur +STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Facere +STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Exsequi actionem electam ex indice + +STR_LOCAL_AUTHORITY_ACTION_SMALL_ADVERTISING_CAMPAIGN :Coepta praeconia parva +STR_LOCAL_AUTHORITY_ACTION_MEDIUM_ADVERTISING_CAMPAIGN :Coepta praeconia mediocria +STR_LOCAL_AUTHORITY_ACTION_LARGE_ADVERTISING_CAMPAIGN :Coepta praeconia magna +STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Condere reconstructionem viarum vicinalium +STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Struere effigiem praesidis societatis +STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Condere nova aedificia +STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Emere monopolium +STR_LOCAL_AUTHORITY_ACTION_BRIBE :Largiri auctoritatem vicinalem + +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Incipere coepta praeconia parva, ut plures vectores oneraque alliciantur tuis muneribus.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Incipere coepta praeconia mediocria, ut plures vectores oneraque alliciantur tuis muneribus.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Incipere coepta praeconia magna, ut plures vectores oneraque alliciantur tuis muneribus.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Condere reconstructionem retis viarum urbanarum. Reconstructio facit magnam turbam viariam in oppido 6 menses.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Struere effigiem praesidis tuae societatis in oppido.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Condere nova aedificia mercatoria in oppido.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Emere monopolium unius anni in oppido. Auctoritas oppidi licebit vectores oneraque solum ire ad stationes tuas.{}Pretium: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Largiri auctoritatem vicinalem ut tua censio augeatur, at difficultas adest: forsitan animadvertaris et graviter puniaris.{}Pretium: {CURRENCY_LONG} + +# Goal window +STR_GOALS_CAPTION :{WHITE}{COMPANY} Metae +STR_GOALS_SPECTATOR_CAPTION :{WHITE}Metae Globales +STR_GOALS_GLOBAL_TITLE :{BLACK}Metae globales: +STR_GOALS_TEXT :{ORANGE}{STRING} +STR_GOALS_NONE :{ORANGE}- Nullae - +STR_GOALS_SPECTATOR_NONE :{ORANGE}- Non applicabiles - +STR_GOALS_PROGRESS :{ORANGE}{STRING} +STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} +STR_GOALS_COMPANY_TITLE :{BLACK}Metae Societatis: +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Preme in metam ut conspectus moveatur supra industriam/oppidum/tegulam. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam/oppidum/tegulam + +# Goal question window +STR_GOAL_QUESTION_CAPTION_QUESTION :Quaestio +STR_GOAL_QUESTION_CAPTION_INFORMATION :Indicia +STR_GOAL_QUESTION_CAPTION_WARNING :Cautio +STR_GOAL_QUESTION_CAPTION_ERROR :Error + +### Start of Goal Question button list +STR_GOAL_QUESTION_BUTTON_CANCEL :Cancellare +STR_GOAL_QUESTION_BUTTON_OK :Ita +STR_GOAL_QUESTION_BUTTON_NO :Non +STR_GOAL_QUESTION_BUTTON_YES :Ita +STR_GOAL_QUESTION_BUTTON_DECLINE :Recusare +STR_GOAL_QUESTION_BUTTON_ACCEPT :Accipere +STR_GOAL_QUESTION_BUTTON_IGNORE :Neglegere +STR_GOAL_QUESTION_BUTTON_RETRY :Iterum conari +STR_GOAL_QUESTION_BUTTON_PREVIOUS :Priorem +STR_GOAL_QUESTION_BUTTON_NEXT :Secundam +STR_GOAL_QUESTION_BUTTON_STOP :Desinere +STR_GOAL_QUESTION_BUTTON_START :Incipere +STR_GOAL_QUESTION_BUTTON_GO :Ire +STR_GOAL_QUESTION_BUTTON_CONTINUE :Pergere +STR_GOAL_QUESTION_BUTTON_RESTART :Incipere denuo +STR_GOAL_QUESTION_BUTTON_POSTPONE :Procrastinare +STR_GOAL_QUESTION_BUTTON_SURRENDER :Dedere +STR_GOAL_QUESTION_BUTTON_CLOSE :Claudere + +# Subsidies window +STR_SUBSIDIES_CAPTION :{WHITE}Subsidia +STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Subsidia portationis oblata: +STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} abs {STRING.abl} ad {STRING.acc}{YELLOW} (ante {DATE_SHORT}) +STR_SUBSIDIES_NONE :{ORANGE}- Nulla - +STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Itinera iam subventa: +STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} abs {STRING} ad {STRING}{YELLOW} ({COMPANY}{YELLOW}, ad {DATE_SHORT}) +STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Preme in subsidium ut conspectus moveatur supra industriam/oppidum. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam/oppidum + +# Story book window +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Librum Fabularum +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Librum Fabularum Globalis +STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Salire ad quamdam paginam eligendo eam in hac indice +STR_STORY_BOOK_PREV_PAGE :{BLACK}Priorem +STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Ire ad paginam priorem +STR_STORY_BOOK_NEXT_PAGE :{BLACK}Secundam +STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ire ad paginam secundam +STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Meta irrita + +# Station list window +STR_STATION_LIST_TOOLTIP :{BLACK}Nomina stationum - preme in nomen ut conspectus moveatur supra stationem. Ctrl+Preme ut nova fenestra conspectus aperiatur supra stationem +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Comprime Ctrl ut plures res eligantur +STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Statio{P "" nes} +STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} +STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} +STR_STATION_LIST_NONE :{YELLOW}- Nullae - +STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}Omnes eligere +STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}Omnes onerum typos eligere (etiam onera non in ulla statione) +STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Nullum onus manens est + +# Station view window +STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} +STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} +STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} abs {STATION}) +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservata ad onerandum) + +STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accipit +STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Monstrare index onerum acceptorum +STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Onera accepta: {WHITE}{CARGO_LIST} + +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Haec statio monopolio benefit. +STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} monopolium emit in hoc oppido. + +STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Censiones +STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Monstrare censiones stationum +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Oblatum menstruum et censio vicinalis: +STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) + +STR_STATION_VIEW_GROUP :{BLACK}Ordo +STR_STATION_VIEW_WAITING_STATION :Statione: Manentia +STR_STATION_VIEW_WAITING_AMOUNT :Copia: Manentia +STR_STATION_VIEW_PLANNED_STATION :Statione: Rata +STR_STATION_VIEW_PLANNED_AMOUNT :Copia: Rata +STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} ex {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} per {STATION} +STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} ad {STATION} +STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} e statione ignota +STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} ad aliquam stationem +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} per aliquam stationem +STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} ex hac statione +STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} per hanc stationem +STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} ad hanc stationem +STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} continue + +STR_STATION_VIEW_GROUP_S_V_D :Origo-Via-Destinatum +STR_STATION_VIEW_GROUP_S_D_V :Origo-Destinatum-Via +STR_STATION_VIEW_GROUP_V_S_D :Via-Origo-Destinatum +STR_STATION_VIEW_GROUP_V_D_S :Via-Destinatum-Origo +STR_STATION_VIEW_GROUP_D_S_V :Destinatum-Origo-Via +STR_STATION_VIEW_GROUP_D_V_S :Destinatum-Via-Origo + +############ range for rating starts +STR_CARGO_RATING_APPALLING :Pessima +STR_CARGO_RATING_VERY_POOR :Prava +STR_CARGO_RATING_POOR :Mala +STR_CARGO_RATING_MEDIOCRE :Mediocris +STR_CARGO_RATING_GOOD :Bona +STR_CARGO_RATING_VERY_GOOD :Proba +STR_CARGO_RATING_EXCELLENT :Praestans +STR_CARGO_RATING_OUTSTANDING :Optima +############ range for rating ends + +STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Movere conspectum supra hanc stationem. Ctrl+Preme ut nova fenestra conspectus aperiatur supra stationem +STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Mutare nomen stationis + +STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Monstrare omnes hamaxostichos qui hanc stationem in horario habent +STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Monstrare omnia vehicula viaria quae hanc stationem in horario habent +STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Monstrare omnia aeroplana quae hanc stationem in horario habent +STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Monstrare omnes naves quae hanc stationem in horario habent + +STR_STATION_VIEW_RENAME_STATION_CAPTION :Renominare stationem + +STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Claudere aeroportum +STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Facere ut aeroplana non appellant in hoc aeroportu + +# Waypoint/buoy view window +STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Movere conspectum supra hunc interlocum. ut nova fenestra conspectus aperiatur supra interlocum +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Mutare nomen interloci +STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Movere conspectum supra hoc signum monitorium. ut nova fenestra conspectus aperiatur supra signum monitorium +STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Mutare nomen signi monitorii + +STR_EDIT_WAYPOINT_NAME :{WHITE}Recensere nomen interloci + +# Finances window +STR_FINANCES_CAPTION :{WHITE}{COMPANY} Res Fiscales {BLACK}{COMPANY_NUM} +STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Expensa/Reditus +STR_FINANCES_YEAR :{WHITE}{NUM} +STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Constructio +STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nova Vehicula +STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Pretium Hamaxostichos Operandi +STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Pretium Vehicula Viaria Operandi +STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Pretium Aeroplana Operandi +STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Pretium Naves Operandi +STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Tuitio Property Maintenance +STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Reditus Hamaxostichorum +STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Reditus Vehiculorum Viariorum +STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Reditus Aeroplanorum +STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Reditus Navium +STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Faenus +STR_FINANCES_SECTION_OTHER :{GOLD}Aliae Res +STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} +STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} +STR_FINANCES_TOTAL_CAPTION :{WHITE}Summa: +STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Pecunia +STR_FINANCES_LOAN_TITLE :{WHITE}Creditum +STR_FINANCES_MAX_LOAN :{WHITE}Creditum Maximum: {BLACK}{CURRENCY_LONG} +STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} +STR_FINANCES_BORROW_BUTTON :{BLACK}Mutuari {CURRENCY_LONG} +STR_FINANCES_BORROW_TOOLTIP :{BLACK}Mutuari plurem pecuniam. Ctrl+Preme ut creditum mutuetur quam maxime possis +STR_FINANCES_REPAY_BUTTON :{BLACK}Solvere {CURRENCY_LONG} +STR_FINANCES_REPAY_TOOLTIP :{BLACK}Solvere partem crediti. Ctrl+Preme ut creditum solvatur quam maxime possis +STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastructura + +# Company view +STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM} +STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(Praeses) + +STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}Condita: {WHITE}{NUM} +STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}Schema Coloris: +STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}Vehicula: +STR_COMPANY_VIEW_TRAINS :{WHITE}{COMMA} hamaxostich{P us i} +STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}{COMMA} vehicul{P um a} viari{P um a} +STR_COMPANY_VIEW_AIRCRAFT :{WHITE}{COMMA} aeroplan{P um a} +STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA} nav{P is es} +STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Nulla +STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Aestimatio societatis: {WHITE}{CURRENCY_LONG} +STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% posessa ab {COMPANY}) +STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infrastructura: +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} par{P s tes} ferriviae +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} par{P s tes} viae +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} tegula{P "" e} aquaria{P "" e} +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} tegula{P "" e} stationum +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} aeroportus +STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Nulla + +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Struere sedem +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Struere primariam sedem societatis +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Videre sedem +STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Videre primariam sedem societatis +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Movere sedem +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Movere primariam sedem societatis aliquo pretio 1% aestimationis valoris societatis. Shift+Preme ut pretium monstretur sine sedem movendo +STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Indicia +STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Videre indicia descripta infrastructurae + +STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Facies Nova +STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Eligere novam faciem praesidis +STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Schema Coloris +STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP :{BLACK}Mutare schema coloris societatis +STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}Nomen Societatis +STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP :{BLACK}Mutare nomen societatis +STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON :{BLACK}Nomen Praesidis +STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP :{BLACK}Mutare nomen praesidis + +STR_COMPANY_VIEW_BUY_SHARE_BUTTON :{BLACK}Quadrantem sortium huius societatis emere +STR_COMPANY_VIEW_SELL_SHARE_BUTTON :{BLACK}Quadrantem sortium huius societatis vendere +STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP :{BLACK}Quadrantem sortium huius societatis emere. Shift+Preme ut pretium monstretur sine emptione +STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Quadrantem sortium huius societatis vendere. Shift+Preme ut pretium monstretur sine emptione + +STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nomen Societatis +STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nomen Praesidis + +STR_BUY_COMPANY_MESSAGE :{WHITE}Quaerimus aliam societatem emere nostram societatem.{}{}Visne emere {COMPANY} pretio {CURRENCY_LONG}? + +# Company infrastructure window +STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructura quam {COMPANY} habet +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Partes ferriviariae: +STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signalia +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Partes viariae: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Viariae +STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Ferriviae stratariae +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Tegulae aquariae: +STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canales +STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationes: +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Tegulae stationum +STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroportus +STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG} per annum + +# Industry directory +STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industriae +STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nullae - +STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% translata) +STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% translata) +STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} +STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomina industriarum - preme in nomen ut conspectus moveatur supra industriam. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam + +# Industry view +STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} +STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Productio mensis prioris: +STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% translata) +STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hanc industriam. Ctrl+Preme ut nova fenestra conspectus aperiatur supra industriam +STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Quantitas productionis: {YELLOW}{COMMA}% +STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Haec industria mox claudetur! + +############ range for requires starts +STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING} +STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING} +############ range for requires ends + +############ range for produces starts +STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Onera utenda manentia: +STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK} +STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Efficit: {YELLOW}{STRING.acc}{STRING} +STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Efficit: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING} +############ range for produces ends + +STR_CONFIG_GAME_PRODUCTION :{WHITE}Mutare productionem (per octo multiplicatur, ad 2040) +STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Mutare productionem (centesima, ad 800%) + +# Vehicle lists +STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA} Hamaxostich{P us i} +STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA} Vehicul{P um a} Viari{P um a} +STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA} Nav{P is es} +STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Aeroplan{P um a} + +STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Hamaxostichi - preme in hamaxostichum ut indicia monstretur +STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Vehicula viaria - preme in vehiculum ut indicia monstretur +STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Naves - preme in navem ut indicia monstretur +STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Aeroplana - preme in aeroplanum ut indicia monstretur + +STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Lucrum huius anni: {CURRENCY_LONG} (anni prioris: {CURRENCY_LONG}) + +STR_VEHICLE_LIST_AVAILABLE_TRAINS :Hamaxostichi Parabiles +STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Vehicula Viaria Parabilia +STR_VEHICLE_LIST_AVAILABLE_SHIPS :Naves Parabiles +STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Aeroplana Parabilia +STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}Videre indicem qui ad vehicula parabilia huius typi spectat + +STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Recensere indicem +STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}Mittere iussa ad omnia vehicula huius indicis +STR_VEHICLE_LIST_REPLACE_VEHICLES :Mutare vehicula +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Dimittere ad Ministrandum + +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Dimittere ad Receptaculum +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Dimittere ad Receptaculum +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Dimittere ad Receptaculum +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Dimittere ad Tugurium + +STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Preme ut omnia vehicula huius indicis sistantur +STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Preme ut omnia vehicula huius indicis incohentur + +STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Iussa communia {COMMA} vehicul{P i orum} + +# Group window +STR_GROUP_ALL_TRAINS :Omnes hamaxostichi +STR_GROUP_ALL_ROAD_VEHICLES :Omnia vehicula viaria +STR_GROUP_ALL_SHIPS :Omnes naves +STR_GROUP_ALL_AIRCRAFTS :Omnia aeroplana + +STR_GROUP_DEFAULT_TRAINS :Hamaxostichi sine grege +STR_GROUP_DEFAULT_ROAD_VEHICLES :Vehicula viaria sine grege +STR_GROUP_DEFAULT_SHIPS :Naves sine grege +STR_GROUP_DEFAULT_AIRCRAFTS :Aeroplana sine grege + +STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Greges - preme in gregem ut index vehiculorum huius gregis ostendeatur. Trahe poneque greges ut ordinentur. +STR_GROUP_CREATE_TOOLTIP :{BLACK}Preme ut grex creatur +STR_GROUP_DELETE_TOOLTIP :{BLACK}Delere gregem electam +STR_GROUP_RENAME_TOOLTIP :{BLACK}Renominare gregem electam +STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Preme ut vehicula huius gregis custodiantur contra autocommutationem globalem + +STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Gregem Delere +STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Esne certus te velle delere hanc gregem eiusque descendentes? + +STR_GROUP_ADD_SHARED_VEHICLE :Addere vehicula communia +STR_GROUP_REMOVE_ALL_VEHICLES :Removere omnia vehicula + +STR_GROUP_RENAME_CAPTION :{BLACK}Renominare gregem + +# Build vehicle window +STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Vehicula Ferriviaria Nova +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Vehicula Ferriviaria Electrica Nova +STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Vehicula Monoorbitalia Nova +STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Vehicula Maglev Nova + +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Vehicula Ferriviaria Nova +STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Vehicula Viaria Nova +STR_BUY_VEHICLE_SHIP_CAPTION :Naves Novae +STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Aeroplana Nova + +STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}{BLACK} Pondus: {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Velocitas: {GOLD}{VELOCITY}{BLACK} Potestas: {GOLD}{POWER} +STR_PURCHASE_INFO_SPEED :{BLACK}Velocitas: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Velocitas in mare: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}Velocitas in canale flumineve: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Pretium Operandi: {GOLD}{CURRENCY_LONG} per annum +STR_PURCHASE_INFO_CAPACITY :{BLACK}Capacitas: {GOLD}{CARGO_LONG} {STRING} +STR_PURCHASE_INFO_REFITTABLE :(refectabilis) +STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Productum: {GOLD}{NUM}{BLACK} Aetas: {GOLD}{COMMA} ann{P us i} +STR_PURCHASE_INFO_RELIABILITY :{BLACK}Constantia Maxima: {GOLD}{COMMA}% +STR_PURCHASE_INFO_COST :{BLACK}Pretium: {GOLD}{CURRENCY_LONG} +STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Pondus: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) +STR_PURCHASE_INFO_COST_SPEED :{BLACK}Pretium: {GOLD}{CURRENCY_LONG}{BLACK} Velocitas: {GOLD}{VELOCITY} +STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacitas: {GOLD}{CARGO_LONG}, {CARGO_LONG} +STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Currus Potentiati: {GOLD}+{POWER}{BLACK} Pondus: {GOLD}+{WEIGHT_SHORT} +STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Refectabilis: {GOLD}{STRING.dat} +STR_PURCHASE_INFO_ALL_TYPES :Omnibus onerum typis +STR_PURCHASE_INFO_ALL_BUT :Omnibus praeterquam {CARGO_LIST.dat} +STR_PURCHASE_INFO_MAX_TE :{BLACK}Vis Tractionis Maxima: {GOLD}{FORCE} +STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Max. distantia volatus: {GOLD}{COMMA} tegulas + +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Index electionis vehiculorum ferriviariorum. Preme in vehiculum ut plura indicia monstrentur. Ctrl+Preme ut typus vehiculi celetur +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Index electionis vehiculorum viariorum. Preme in vehiculum ut plura indicia monstrentur. Ctrl+Preme ut typus vehiculi celetur +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Index electionis navium. Preme in navem ut plura indicia monstrentur. Ctrl+Preme ut typus navis celetur +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Index electionis aeroplanorum. Preme in aeroplanum ut plura indicia monstrentur. Ctrl+Preme ut typus aeroplani celetur + +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Emere Vehiculum +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Emere Vehiculum +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Emere Navem +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Emere Aeroplanum + +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Emere vehiculum ferriviarium electum. Shift+Preme ut pretium monstretur sine emptione +STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Emere vehiculum viarium electum. Shift+Preme ut pretium monstretur sine emptione +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Emere navem electam. Shift+Preme ut pretium monstretur sine emptione +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Emere aeroplanum electum. Shift+Preme ut pretium monstretur sine emptione + +STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Renominare +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Renominare +STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Renominare +STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Renominare + +STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Renominare typum ferriviarii vehiculi +STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Renominare typum viarii vehiculi +STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Renominare typum navis +STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Renominare typum aeroplani + +STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Celare +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Celare +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Celare +STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Celare + +STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Monstrare +STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Monstrare +STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Monstrare +STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Monstrare + +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Monstrare/celare typum vehiculi ferriviarii +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Monstrare/celare typum vehiculi viarii +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Monstrare/celare typum navis +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Monstrare/celare typum aeroplani + +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Renominare typum ferriviarii vehiculi +STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Renominare typum viarii vehiculi +STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Renominare typum navis +STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Renominare typum aeroplani + +# Depot window +STR_DEPOT_CAPTION :{WHITE}{DEPOT} + +STR_DEPOT_RENAME_TOOLTIP :{BLACK}Mutare nomen receptaculi +STR_DEPOT_RENAME_DEPOT_CAPTION :Renominare receptaculum + +STR_DEPOT_NO_ENGINE :{BLACK}- +STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vehicul{P um a}{STRING} +STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) + +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Hamaxostichi - sinistro trahe vehiculum ut addatur/removeatur tramini, dextrum preme ut indicium monstretur. Ctrl pressa, cuncta catena vehiculorum sequens additur/removetur/indicium eius monstratur +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vehicula - dextrum preme in vehiculum ut indicium monstretur +STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Naves - dextrum preme in navem ut indicium monstretur +STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Aeroplana - dextrum preme in aeroplanum ut indicium monstretur + +STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Huc trahe vehiculum ut vendatur +STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Huc trahe vehiculum ut vendatur +STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Huc trahe navem ut vendatur +STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Huc trahe aeroplanum ut vendatur + +STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}Huc trahe hamaxam ut cunctum tramen vendatur + +STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}Vendere omnes hamaxostichos in receptaculo +STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}Vendere omnia vehicula in receptaculo +STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}Vendere omnes naves in receptaculo +STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}Vendere omnia aeroplana in tugurio + +STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}Automutare omnes hamaxostichos in receptaculo +STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Automutare omnia vehicula viaria in receptaculo +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Automutare omnes naves in receptaculo +STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Automutare omnia aeroplana in tugurio + +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nova Vehicula +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nova Vehicula +STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Novae Naves +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nova Aeroplana + +STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Emere novam partem hamaxostichi +STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Emere novum vehiculum viarium +STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Emere novam navem +STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Emere novum aeroplanum + +STR_DEPOT_CLONE_TRAIN :{BLACK}Duplicare Hamaxostichum +STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Duplicare Vehiculum +STR_DEPOT_CLONE_SHIP :{BLACK}Duplicare Navem +STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Duplicare Aeroplanum + +STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Emet exemplar hamaxostichi electi et omnes currus eius. Preme hunc globulum deinde in hamaxostichum vel intra vel extra receptaculum. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Emet exemplar vehiculi viarii electi. Preme hunc globulum deinde in vehiculum viarium vel intra vel extra receptaculum. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Emet exemplar navis electae. Preme hunc globulum deinde in navem vel intra vel extra receptaculum. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Emet exemplar aeroplani electi. Preme hunc globulum deinde in aeroplanum vel intra vel extra receptaculum. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione + +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc receptaculum ferriviarium. Ctrl+Preme ut nova fenestra conspectus aperiatur supra receptaculum ferriviarium +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc receptaculum viarium. Ctrl+Preme ut nova fenestra conspectus aperiatur supra receptaculum viarium +STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc receptaculum navium. Ctrl+Preme ut nova fenestra conspectus aperiatur supra receptaculum navium +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc tugurium. Ctrl+Preme ut nova fenestra conspectus aperiatur supra tugurium + +STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Ostendere indicem omnium hamaxostichorum qui habent hoc receptaculum in iussis eorum +STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Ostendere indicem omnium vehiculorum viariorum qui habent hoc receptaculum in iussis eorum +STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Ostendere indicem omnium navium qui habent hoc receptaculum in iussis earum +STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Ostendere indicem omnium aeroplanorum qui habent hoc receptaculum in iussis eorum + +STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Preme ut omnes hamaxostichi in hoc receptaculo sistantur +STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Preme ut omnia vehicula in hoc receptaculo sistantur +STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}Preme ut omnes naves in hoc receptaculo sistantur +STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}Preme ut omnia aeroplana in hoc tugurio sistantur + +STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}Preme ut omnes hamaxostichi in hoc receptaculo incohentur +STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Preme ut omnia vehicula in hoc receptaculo incohentur +STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Preme ut omnes naves in hoc receptaculo incohentur +STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Preme ut omnia aeroplana in hoc tugurio incohentur + +STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Omnia vehicula in receptaculo venditurus es. Esne certus? + +# Engine preview window +STR_ENGINE_PREVIEW_CAPTION :{WHITE}Nuntium a fabricatore vehiculorum +STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Nuper fabricamus nov{G us a um i ae a} {STRING} - visne uti hoc vehiculo unum annum, ut videamus quomodo operatur antequam omnibus venum damus? +STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}hamaxa +STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}vehiculum viarium +STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}aeroplanum +STR_ENGINE_PREVIEW_SHIP :{G=f}navis +STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}hamaxa monoorbitalis +STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}hamaxa maglev + +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Pretium: {CURRENCY_LONG} Pondus: {WEIGHT_SHORT}{}Velocitas: {VELOCITY} Potestas: {POWER}{}Pretium Operandi: {CURRENCY_LONG} per annum{}Capacitas: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Pretium: {CURRENCY_LONG} Pondus: {WEIGHT_SHORT}{}Velocitas: {VELOCITY} Potestas: {POWER} V.T. Max.: {6:FORCE}{}Pretium Operandi: {4:CURRENCY_LONG} per annum{}Capacitas: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY}{}Capacitas: {CARGO_LONG}, {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY}{}Capacitas: {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY} Range: {COMMA} tiles{}Capacitas: {CARGO_LONG}, {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY} Range: {COMMA} tiles{}Capacitas: {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum + +# Autoreplace window +STR_REPLACE_VEHICLES_WHITE :{WHITE}Mutare {STRING} - {STRING} +STR_REPLACE_VEHICLE_TRAIN :Hamaxostichum +STR_REPLACE_VEHICLE_ROAD_VEHICLE :Vehiculum Viarium +STR_REPLACE_VEHICLE_SHIP :Navem +STR_REPLACE_VEHICLE_AIRCRAFT :Aeroplanum + +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}Vehicula possessa +STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Columna cum vehiculis quae possides +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Vehicula parabilia +STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Columna cum vehiculis parabilibus ad mutandum + +STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Eligere typum mutandum +STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Eligere novum typum in loco typi sinistri utendum + +STR_REPLACE_VEHICLES_START :{BLACK}Mutationem Vehiculorum Incipere +STR_REPLACE_VEHICLES_NOW :Omnia vehicula statim mutare +STR_REPLACE_VEHICLES_WHEN_OLD :Vehicula vetera solum mutare +STR_REPLACE_HELP_START_BUTTON :{BLACK}Preme ut vehiculum sinistrum electum incipiat commutari vehiculo dextro electo +STR_REPLACE_NOT_REPLACING :{BLACK}Non mutandum est +STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nullum vehiculum electum +STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} cum vetus +STR_REPLACE_VEHICLES_STOP :{BLACK}Consistere mutationem vehiculorum +STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Preme ut mutatio vehiculi sinistri consistatur + +STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Mutatio: {ORANGE}{STRING} +STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Mutare inter mutationem hamaxarum curruumque +STR_REPLACE_ENGINES :Hamaxarum +STR_REPLACE_WAGONS :Curruum + +STR_REPLACE_HELP_RAILTYPE :{BLACK}Eligere typum astarii cui est hamaxas commutandas +STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Haec monstrat hamaxam ad quam commutandam, si adest +STR_REPLACE_RAIL_VEHICLES :Vehicula Ferriviaria +STR_REPLACE_ELRAIL_VEHICLES :Vehicula Ferriviaria Electrica +STR_REPLACE_MONORAIL_VEHICLES :Vehicula Monoorbitalia +STR_REPLACE_MAGLEV_VEHICLES :Vehicula Maglev + +STR_REPLACE_REMOVE_WAGON :{BLACK}Ablatio curruum: {ORANGE}{STRING} +STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Facere ut automutatio longitudinem traminis contineat ablatione curruum (primo primorum), si tramen longius fiat mutatione hamaxae + +# Vehicle view +STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} + +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hunc hamaxostichum. Ctrl+Preme ut conspectus tramen sequatur +STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc vehiculum. Ctrl+Preme ut conspectus vechiculum sequatur +STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hanc navem. Ctrl+Preme ut conspectus navem sequatur +STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Movere conspectum supra hoc aeroplanum. Ctrl+Preme ut conspectus aeroplanum sequatur + +STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mittere hamaxosticum ad receptaculum. Ctrl+Preme ut modo ministretur +STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mittere vehiculum ad receptaculum. Ctrl+Preme ut modo ministretur +STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mittere navem ad receptaculum. Ctrl+Preme ut modo ministretur +STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Mittere aeroplanum ad tugurium. Ctrl+Preme ut modo ministretur + +STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}Emet exemplar hamaxostichi electi et omnes currus eius. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}Emet exemplar vehiculi viarii electi. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}Emet exemplar navis electae. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione +STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Emet exemplar aeroplani electi. Ctrl+Preme ut iussa communicentur. Shift+Preme ut pretium monstretur sine emptione + +STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Impellere tramen post signale sine mora, etsi signale rubrum est + +STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Reficere hamaxostichum alii typo oneri +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reficere vehiculum alii typo oneri +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Reficere navem alii typo oneri +STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reficere aeroplanum alii typo oneri + +STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Cursum traminis reflectere +STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Fac ut vehiculum revertatur + +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Monstrare iussa hamaxostichi. Ctrl+Preme ut horarius hamaxostichi monstretur +STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Monstrare iussa vehiculi. Ctrl+Preme ut horarius vehiculi monstretur +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Monstrare iussa navis. Ctrl+Preme ut horarius navis monstretur +STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Monstrare iussa aeroplani. Ctrl+Preme ut horarius aeroplani monstretur + +STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Monstrare indicia hamaxostichi +STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Monstrare indicia vehiculi +STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Monstrare indicia navis +STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Monstrare indicia aeroplani + +STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Actio hamaxostichi currens - preme ut hamaxostichus sistatur/incohatur. Ctrl+Preme ut conspectus movetur ad destinatum +STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Actio vehiculi currens - preme ut vehiculum sistatur/incohatur. Ctrl+Preme ut conspectus movetur ad destinatum +STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Actio navis currens - preme ut navis sistatur/incohatur. Ctrl+Preme ut conspectus movetur ad destinatum +STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Actio aeroplani currens - preme ut aeroplanum sistatur/incohatur. Ctrl+Preme ut conspectus movetur ad destinatum + +# Messages in the start stop button in the vehicle view +STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Onerans / Exonerans +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}Exiens +STR_VEHICLE_STATUS_CRASHED :{RED}Destructum! +STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Defectum +STR_VEHICLE_STATUS_STOPPED :{RED}Constitum +STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Sistens, {VELOCITY} +STR_VEHICLE_STATUS_TRAIN_NO_POWER :{RED}Sine potestate +STR_VEHICLE_STATUS_TRAIN_STUCK :{ORANGE}Cursum apertum exspectans +STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR :{ORANGE}Destinatum nimis procul + +STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}Navigans ad {STATION}, {VELOCITY} +STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}Sine iussis, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Navigans ad {WAYPOINT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_VEL :{ORANGE}Navigans ad {DEPOT}, {VELOCITY} +STR_VEHICLE_STATUS_HEADING_FOR_DEPOT_SERVICE_VEL :{LTBLUE}Iens ministrandum ad {DEPOT}, {VELOCITY} + +# Vehicle stopped/started animations +STR_VEHICLE_COMMAND_STOPPED_SMALL :{TINY_FONT}{RED}Constitum +STR_VEHICLE_COMMAND_STOPPED :{RED}Constitum +STR_VEHICLE_COMMAND_STARTED_SMALL :{TINY_FONT}{GREEN}Incohatum +STR_VEHICLE_COMMAND_STARTED :{GREEN}Incohatum + +# Vehicle details +STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE} (Indicia) +STR_VEHICLE_NAME_BUTTON :{BLACK}Nominare + +STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}Nominare hamaxostichum +STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}Nominare vehiculum +STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}Nominare navem +STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Nominare aeroplanum + +STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Aetas: {LTBLUE}{STRING}{BLACK} Pretium operandi: {LTBLUE}{CURRENCY_LONG} per annum +# The next two need to stay in this order +STR_VEHICLE_INFO_AGE :{COMMA} ann{P us i} ({COMMA}) +STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ann{P us i} ({COMMA}) + +STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocitas maxima: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocitas maxima: {LTBLUE}{VELOCITY} {BLACK}Max. distantia volatus: {LTBLUE}{COMMA} tegulas +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Pondus: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potestas: {LTBLUE}{POWER}{BLACK} Velocitas maxima: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Pondus: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potestas: {LTBLUE}{POWER}{BLACK} Velocitas maxima: {LTBLUE}{VELOCITY} {BLACK}V.T. Max.: {LTBLUE}{FORCE} + +STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucrum huius anni: {LTBLUE}{CURRENCY_LONG} (anni prioris: {CURRENCY_LONG}) +STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Constantia: {LTBLUE}{COMMA}% {BLACK}Defecta post ministrationem priorem: {LTBLUE}{COMMA} + +STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Factum: {LTBLUE}{NUM}{BLACK} Aestimatio: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Capacitas: {LTBLUE}Nulla{STRING} +STR_VEHICLE_INFO_CAPACITY :{BLACK}Capacitas: {LTBLUE}{CARGO_LONG}{3:STRING} +STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Capacitas: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) +STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacitas: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} + +STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Credita transferendi: {LTBLUE}{CURRENCY_LONG} + +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Intervallum ministrationis: {LTBLUE}{COMMA}{NBSP}dies{BLACK} Ministratio prior: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Intervallum ministrationis: {LTBLUE}{COMMA}%{BLACK} Ministratio prior: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Augere intervallum ministrationis 10. Ctrl+Preme ut augeatur 5 +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Minuere intervallum ministrationis 10. Ctrl+Preme ut minuatur 5 + +STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Eligere genus intervalli ministrationis +STR_VEHICLE_DETAILS_DEFAULT :Solitus +STR_VEHICLE_DETAILS_DAYS :Diebus +STR_VEHICLE_DETAILS_PERCENT :Per centum + +STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nominare hamaxostichum +STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nominare vehiculum +STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}Nominare navem +STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Nominare aeroplanum + +# Extra buttons for train details windows +STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Factum: {LTBLUE}{NUM}{BLACK} Aestimatio: {LTBLUE}{CURRENCY_LONG} +STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Aestimatio: {LTBLUE}{CURRENCY_LONG} + +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Tota capacitas huius hamaxostichi: +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM}) + +STR_VEHICLE_DETAILS_CARGO_EMPTY :{LTBLUE}Vacuum +STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO_LONG} ex {STATION} +STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO_LONG} ex {STATION} (x{NUM}) + +STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Onus +STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Monstrare indicia oneris portatum +STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Indicia +STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Monstrare indicia vehiculorum hamaxostichi +STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Capacitates +STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Monstrare capacitates cuiusque vehiculi +STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Tota Onera +STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Monstrare totam capacitatem hamaxostichi, per oneris typum + +STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Capacitas: {LTBLUE} + +# Vehicle refit +STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Reficere) +STR_REFIT_TITLE :{GOLD}Eligere typum oneris portandum: +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Capacitas nova: {GOLD}{CARGO_LONG}{}{BLACK}Pretium reficiendi: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Capacitas nova: {GOLD}{CARGO_LONG}{}{BLACK}Reditus reficiendi: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Capacitas nova: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Pretium reficiendi: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Capacitas nova: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Reditus reficiendi: {GREEN}{CURRENCY_LONG} +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Eligere vehicula reficienda. Multa vehicula eligantur murem trahendo. Preme in locum vacuum ut cuncta eligatur. Ctrl+Preme ut vehiculum ac omnia sequentia eligantur + +STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Eligere oneris typum hamaxosticho transportandum +STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Eligere oneris typum vehiculo transportandum +STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Eligere oneris typum navi transportandum +STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Eligere oneris typum aeroplano transportandum + +STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Reficere hamaxostichum +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Reficere vehiculum viarium +STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Reficere navem +STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Reficere aeroplanum + +STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Reficere hamaxostichum typo oneris electo +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reficere vehiculum viarium typo oneris electo +STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Reficere navem typo oneris electo +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reficere aeroplanum typo oneris electo + +# Order view +STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Iussa) +STR_ORDERS_TIMETABLE_VIEW :{BLACK}Horarius +STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Mutare ad horarium + +STR_ORDERS_LIST_TOOLTIP :{BLACK}Index iussorum - preme in iussum ut eligatur. Ctrl+Preme vagatur ad destinatum +STR_ORDER_INDEX :{COMMA}:{NBSP} +STR_ORDER_TEXT :{STRING} {STRING} {STRING} + +STR_ORDERS_END_OF_ORDERS :- - Finis Iussorum - - +STR_ORDERS_END_OF_SHARED_ORDERS :- - Finis Iussorum Communium - - + +# Order bottom buttons +STR_ORDER_NON_STOP :{BLACK}Continue +STR_ORDER_GO_TO :I ad +STR_ORDER_GO_NON_STOP_TO :I continue ad +STR_ORDER_GO_VIA :I per +STR_ORDER_GO_NON_STOP_VIA :I continue per +STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Eligere si electum iussum continuum sit + +STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Plene quidquam onerare +STR_ORDER_DROP_LOAD_IF_POSSIBLE :Onerare si parabile est +STR_ORDER_DROP_FULL_LOAD_ALL :Plene omnia onera onerare +STR_ORDER_DROP_FULL_LOAD_ANY :Plene quidquam onerare +STR_ORDER_DROP_NO_LOADING :Non onerare +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Mutare modum onerandi iusso electo + +STR_ORDER_TOGGLE_UNLOAD :{BLACK}Omnia exonerare +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Exonerare si accipitur +STR_ORDER_DROP_UNLOAD :Plene quidquam onerare +STR_ORDER_DROP_TRANSFER :Transferre +STR_ORDER_DROP_NO_UNLOADING :Non exonerare +STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Mutare modum exonerandi iusso electo + +STR_ORDER_REFIT :{BLACK}Reficere +STR_ORDER_REFIT_TOOLTIP :{BLACK}Eligere onus cui reficiendum est in hoc iusso. Ctrl+Preme ut iussum reficiendi removeatur +STR_ORDER_REFIT_AUTO :{BLACK}Reficere in statione +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Eligere onus cui reficiendum est in hoc iusso. Ctrl+Preme ut iussum reficiendi removeatur. Vehicula possunt refici in stationibus tantum si NewGRF sinit +STR_ORDER_DROP_REFIT_AUTO :Oneri fixo +STR_ORDER_DROP_REFIT_AUTO_ANY :Oneri parabili + +STR_ORDER_SERVICE :{BLACK}Ministratio +STR_ORDER_DROP_GO_ALWAYS_DEPOT :Ire semper +STR_ORDER_DROP_SERVICE_DEPOT :Ministrari si necesse est +STR_ORDER_DROP_HALT_DEPOT :Consistere +STR_ORDER_SERVICE_TOOLTIP :{BLACK}Transilire huic iusso nisi necesse est ministrari + +STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Indicia vehiculi ad quae spectat ordines conditionales + +# Conditional order variables, must follow order of OrderConditionVariable enum +STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :portio oneris +STR_ORDER_CONDITIONAL_RELIABILITY :constantia +STR_ORDER_CONDITIONAL_MAX_SPEED :velocitas maxima +STR_ORDER_CONDITIONAL_AGE :aetas (annorum) +STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :ministrandum +STR_ORDER_CONDITIONAL_UNCONDITIONALLY :semper +STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :aetas reliqua (anni) + +STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Quomodo valores electi componuntur indicio vehiculi +STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :aequalis est +STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :non aequalis est +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :minor est quam +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :aequalis minorve est quam +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :maior est quam +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :aequalis maiorve est quam +STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :est +STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :non est + +STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}Valor componendum indicio vehiculi +STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Inscribe valorem componendum + +STR_ORDERS_SKIP_BUTTON :{BLACK}Salire +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Transilire iusso currenti, et incipere secundum. Ctrl+Preme ut transiliat ad iussum electum + +STR_ORDERS_DELETE_BUTTON :{BLACK}Delere +STR_ORDERS_DELETE_TOOLTIP :{BLACK}Delere iussum electum +STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Delere omnia iussa +STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Desinere communicationem +STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Desinere iussa communicare. Ctrl+Preme ut etiam omnia iussa huius vehiculi deleantur + +STR_ORDERS_GO_TO_BUTTON :{BLACK}I ad +STR_ORDER_GO_TO_NEAREST_DEPOT :I ad proximum receptaculum +STR_ORDER_GO_TO_NEAREST_HANGAR :I ad proximum tugurium +STR_ORDER_CONDITIONAL :Iussum conditionale +STR_ORDER_SHARE :Iussa communicare +STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Inserere novum iussum ante iussum electum, aut ad finem indicis. Ctrl pressa, iussa stationum sunt 'plene quidquam onerare', iussa interlocorum 'continue', et iussa receptaculorum 'ministrare'. 'Iussa communicare' sive Ctrl facit ut iussa communicentur inter hoc ac electum vehiculum. Pressio in vehiculum aliud transcribit iussa ex illo vehiculo. Si adest iussum receptaculi, vehiculum non automatice ministratur + +STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Monstrare omnia vehicula quae hunc horarium communicant + +# String parts to build the order string +STR_ORDER_GO_TO_WAYPOINT :I per {WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :I continue per {WAYPOINT} + +STR_ORDER_SERVICE_AT :Ministrare ad +STR_ORDER_SERVICE_NON_STOP_AT :Ministrare continue ad + +STR_ORDER_NEAREST_DEPOT :Proxmimum +STR_ORDER_NEAREST_HANGAR :Proxmimum Tugurium +STR_ORDER_TRAIN_DEPOT :Receptaculum Hamaxostichorum +STR_ORDER_ROAD_VEHICLE_DEPOT :Receptaculum Viarium +STR_ORDER_SHIP_DEPOT :Receptaculum Navium +STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} +STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} + +STR_ORDER_REFIT_ORDER :(Refice {STRING.dat}) +STR_ORDER_REFIT_STOP_ORDER :(Refice {STRING.dat} consisteque) +STR_ORDER_STOP_ORDER :(Consiste) + +STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} + +STR_ORDER_IMPLICIT :(Implicitum) + +STR_ORDER_FULL_LOAD :(Plene onerare) +STR_ORDER_FULL_LOAD_ANY :(Plene quidquam onerare) +STR_ORDER_NO_LOAD :(Non onerare) +STR_ORDER_UNLOAD :(Exonerare et onerare) +STR_ORDER_UNLOAD_FULL_LOAD :(Exonerare et plene onerare) +STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Exonerare et plene quidquam onerare) +STR_ORDER_UNLOAD_NO_LOAD :(Exonerare et exire vacue) +STR_ORDER_TRANSFER :(Transferre et onerare) +STR_ORDER_TRANSFER_FULL_LOAD :(Transferre et plene onerare) +STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transferre et plene quidquam onerare) +STR_ORDER_TRANSFER_NO_LOAD :(Transferre et exire vacue) +STR_ORDER_NO_UNLOAD :(Non exonerare et onerare) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(Non exonerare et plene onerare) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Non exonerare et plene quidquam onerare) +STR_ORDER_NO_UNLOAD_NO_LOAD :(Non exonerare et non onerare) + +STR_ORDER_AUTO_REFIT :(Reficere {STRING.dat}) +STR_ORDER_FULL_LOAD_REFIT :(Reficere {STRING.dat} et plene onerare) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Reficere {STRING.dat} et plene quidquam onerare) +STR_ORDER_UNLOAD_REFIT :(Exonerare, reficere {STRING.dat}, et onerare) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Exonerare, reficere {STRING.dat}, et plene onerare) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Exonerare, reficere {STRING.dat}, et plene quidquam onerare) +STR_ORDER_TRANSFER_REFIT :(Transferre, reficere {STRING.dat}, et onerare) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferre, reficere {STRING.dat}, et plene onerare) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferre, reficere {STRING.dat}, et plene quidquam onerare) +STR_ORDER_NO_UNLOAD_REFIT :(Non exonerare, reficere {STRING.dat}, et onerare) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Non exonerare, reficere {STRING.dat}, et plene onerare) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Non exonerare, reficere {STRING.dat}, et plene quidquam onerare) + +STR_ORDER_AUTO_REFIT_ANY :oneri parabili + +STR_ORDER_STOP_LOCATION_NEAR_END :[citera] +STR_ORDER_STOP_LOCATION_MIDDLE :[medio] +STR_ORDER_STOP_LOCATION_FAR_END :[ultra] + +STR_ORDER_OUT_OF_RANGE :{RED} (Destinatum secundum extra distantiam volatus maximam est) + +STR_ORDER_CONDITIONAL_UNCONDITIONAL :Sali ad iussum {COMMA} +STR_ORDER_CONDITIONAL_NUM :Sali ad iussum {COMMA} cum {STRING} {STRING} {COMMA} +STR_ORDER_CONDITIONAL_TRUE_FALSE :Sali ad iussum {COMMA} cum {STRING} {STRING} + +STR_INVALID_ORDER :{RED} (Iussum Irritum) + +# Time table window +STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Horarius) +STR_TIMETABLE_ORDER_VIEW :{BLACK}Iussa +STR_TIMETABLE_ORDER_VIEW_TOOLTIP :{BLACK}Mutare ad aspectum iussorum + +STR_TIMETABLE_TOOLTIP :{BLACK}Horarius - preme in iussum ut eligatur + +STR_TIMETABLE_NO_TRAVEL :(Non est navigandum) +STR_TIMETABLE_NOT_TIMETABLEABLE :Iter (horarius curatur a secundo fixo iusso) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Iter (sine horario) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Iter cum {2:VELOCITY} velocitas maxima (sine horario) +STR_TIMETABLE_TRAVEL_FOR :Iter {STRING} +STR_TIMETABLE_TRAVEL_FOR_SPEED :Iter {STRING} cum {VELOCITY} velocitas maxima +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Iter ({STRING}, sine horario) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Iter ({STRING}, sine horario) cum {VELOCITY} velocitas maxima +STR_TIMETABLE_STAY_FOR_ESTIMATED :(mora {STRING}, sine horario) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(iter {STRING}, sine horario) +STR_TIMETABLE_STAY_FOR :cum mora {STRING} +STR_TIMETABLE_AND_TRAVEL_FOR :cum itinere {STRING} +STR_TIMETABLE_DAYS :{COMMA}{NBSP}die{P i rum} +STR_TIMETABLE_DAYS.acc :{COMMA}{NBSP}die{P m s} +STR_TIMETABLE_TICKS :{COMMA}{NBSP}punct{P i orum} +STR_TIMETABLE_TICKS.acc :{COMMA}{NBSP}punct{P um a} + +STR_TIMETABLE_TOTAL_TIME :{BLACK}Hic horarius peragitur {STRING.acc} +STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Hic horarius peragitur saltem {STRING.acc} (omnia non in horario) + +STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Hoc vehiculum ad tempus est +STR_TIMETABLE_STATUS_LATE :{BLACK}Hoc vehiculum est {STRING.acc} tardum +STR_TIMETABLE_STATUS_EARLY :{BLACK}Hoc vehiculum est {STRING.acc} citum +STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Hic horarius adhuc non incipitur +STR_TIMETABLE_STATUS_START_AT :{BLACK}Hic horarius incipietur {STRING} + +STR_TIMETABLE_STARTING_DATE :{BLACK}Dies Initii +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Elige diem ad initium huius horarii. Ctrl+Preme ut dies initialis huius horarii eligatur ac aequaliter partiuntur omnia vehicula quae hoc iussum communicant secundum ordinem eorum, si iussa tota in horariis sunt + +STR_TIMETABLE_CHANGE_TIME :{BLACK}Mutare Tempus +STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Mutare durationem iussi electi + +STR_TIMETABLE_CLEAR_TIME :{BLACK}Delere Tempus +STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Delere durationem iussi electi + +STR_TIMETABLE_CHANGE_SPEED :{BLACK}Mutare Velocitatem Maximam +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Mutare velocitatem itineris maximam iussi electi + +STR_TIMETABLE_CLEAR_SPEED :{BLACK}Delere Velocitatem Maximam +STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Delere elocitatem itineris maximam iussi electi + +STR_TIMETABLE_RESET_LATENESS :{BLACK}Reponere Numerationem Tarditatis +STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reponere numerationem tarditatis, igitur vehiculum ad tempus sit + +STR_TIMETABLE_AUTOFILL :{BLACK}Implere Automatice +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Implere horarium automatice valoribus itineris secundi (Ctrl+Preme ut conetur tempora morae tenere) + +STR_TIMETABLE_EXPECTED :{BLACK}Aestimata +STR_TIMETABLE_SCHEDULED :{BLACK}Secundum horarium +STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Mutare inter tempora quae aestimata sunt ac secundum horarium sunt + +STR_TIMETABLE_ARRIVAL_ABBREVIATION :A: +STR_TIMETABLE_DEPARTURE_ABBREVIATION :E: + + +# Date window (for timetable) +STR_DATE_CAPTION :{WHITE}Electio diei +STR_DATE_SET_DATE :{BLACK}Eligere diem +STR_DATE_SET_DATE_TOOLTIP :{BLACK}Adhibere diem ut initium horarii +STR_DATE_DAY_TOOLTIP :{BLACK}Elige diem +STR_DATE_MONTH_TOOLTIP :{BLACK}Elige mensem +STR_DATE_YEAR_TOOLTIP :{BLACK}Elige anum + + +# AI debug window +STR_AI_DEBUG :{WHITE}Emendatio IA/Ludi Scripti +STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (e{NUM}) +STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nomen scripti +STR_AI_DEBUG_SETTINGS :{BLACK}Optiones +STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Mutare optiones scripti +STR_AI_DEBUG_RELOAD :{BLACK}Iterum legere IA +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Occidere IA, iterum scriptum legere, et denuo incipere IA +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Sinere/vetare frangendum esse cum nuntium IA idem est quam series frangendi +STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Frangere: +STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Frangere +STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Cum nuntium IA idem est huic seriei, ludus intermittitur +STR_AI_DEBUG_MATCH_CASE :{BLACK}Sequi casum litterarum +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Eligere si sit casus litterarum sequendus cum nuntia IA componuntur seriei frangendi +STR_AI_DEBUG_CONTINUE :{BLACK}Pergere +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Resumere ludum et IA pergere +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Inspicere nuntia emendationis huius IA +STR_AI_GAME_SCRIPT :{BLACK}Ludi Scriptum +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Inspicere nuntia Ludi Scripti + +STR_ERROR_AI_NO_AI_FOUND :Nulla IA idonea reperta est.{}Haec IA substituta est et nihil agit.{}Potes arcessere nonullas IA in Inventario Interretale +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Unum currens scriptum corruit. Si potes, admone scriptori de hoc cum imagine fenestrae Emendationis IA/Ludi Scripti +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Fenestra Emendationis IA/Ludi Scripti tantum servatro licet uti + +# AI configuration window +STR_AI_CONFIG_CAPTION :{WHITE}Configuratio IA/Ludi Scriptum +STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Ludi Scriptum quod imponet ludo proximo +STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}IA quae imponet ludo proximo +STR_AI_CONFIG_HUMAN_PLAYER :Lusor humanus +STR_AI_CONFIG_RANDOM_AI :IA Fortuita +STR_AI_CONFIG_NONE :(nulla) + +STR_AI_CONFIG_MOVE_UP :{BLACK}Sursum Movere +STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Movere IA electam sursum in indice +STR_AI_CONFIG_MOVE_DOWN :{BLACK}Deorsum Movere +STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Movere IA electam sursum in indice + +STR_AI_CONFIG_GAMESCRIPT :{SILVER}Ludi Scriptum +STR_AI_CONFIG_AI :{SILVER}AI + +STR_AI_CONFIG_CHANGE :{BLACK}Eligere {STRING} +STR_AI_CONFIG_CHANGE_NONE : +STR_AI_CONFIG_CHANGE_AI :IA +STR_AI_CONFIG_CHANGE_GAMESCRIPT :Scriptum +STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Legere ludi scriptum alium +STR_AI_CONFIG_CONFIGURE :{BLACK}Parametra +STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}Recensere parametra Scripti + +# Available AIs window +STR_AI_LIST_CAPTION :{WHITE}Parabilia {STRING} +STR_AI_LIST_CAPTION_AI :IA +STR_AI_LIST_CAPTION_GAMESCRIPT :Ludi Scripta +STR_AI_LIST_TOOLTIP :{BLACK}Preme ut scriptum eligatur + +STR_AI_LIST_AUTHOR :{LTBLUE}Scriptor: {ORANGE}{STRING} +STR_AI_LIST_VERSION :{LTBLUE}Editio: {ORANGE}{NUM} +STR_AI_LIST_URL :{LTBLUE}URL: {ORANGE}{STRING} + +STR_AI_LIST_ACCEPT :{BLACK}Accipere +STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Eligere scriptum +STR_AI_LIST_CANCEL :{BLACK}Cancellare +STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Non scriptum mutare + +# AI Parameters +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametra +STR_AI_SETTINGS_CAPTION_AI :IA +STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Ludi Scripti +STR_AI_SETTINGS_CLOSE :{BLACK}Claudere +STR_AI_SETTINGS_RESET :{BLACK}Revertere +STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Quot dies post IA priorem haec IA incipiet (plus minusve): {ORANGE}{STRING} + + +# Textfile window +STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} - {STRING} LegeMe +STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} - {STRING} Index Mutationum +STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} - {STRING} Licentia +STR_TEXTFILE_WRAP_TEXT :{WHITE}Verba volvere +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Volvere verba fenestrae ut omnia intra adsunt sine vagando +STR_TEXTFILE_VIEW_README :{BLACK}Inspicere LegeMe +STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Index Mutationum +STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licentia + + +# Vehicle loading indicators +STR_PERCENT_UP_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW} +STR_PERCENT_UP :{WHITE}{NUM}%{UP_ARROW} +STR_PERCENT_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{DOWN_ARROW} +STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWN_ARROW} +STR_PERCENT_UP_DOWN_SMALL :{TINY_FONT}{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} +STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UP_ARROW}{DOWN_ARROW} +STR_PERCENT_NONE_SMALL :{TINY_FONT}{WHITE}{NUM}% +STR_PERCENT_NONE :{WHITE}{NUM}% + +# Income 'floats' +STR_INCOME_FLOAT_COST_SMALL :{TINY_FONT}{RED}Expensum: {CURRENCY_LONG} +STR_INCOME_FLOAT_COST :{RED}Expensum: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GREEN}Reditus: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME :{GREEN}Reditus: {CURRENCY_LONG} +STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Translatio: {CURRENCY_LONG} +STR_FEEDER :{YELLOW}Translatio: {CURRENCY_LONG} +STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Translatio: {CURRENCY_LONG}{WHITE} / {GREEN}Reditus: {CURRENCY_LONG} +STR_FEEDER_INCOME :{YELLOW}Translatio: {CURRENCY_LONG}{WHITE} / {GREEN}Reditus: {CURRENCY_LONG} +STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Translatio: {CURRENCY_LONG}{WHITE} / {RED}Expensum: {CURRENCY_LONG} +STR_FEEDER_COST :{YELLOW}Translatio: {CURRENCY_LONG}{WHITE} / {RED}Expensum: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_COST :{WHITE}Pretium Aestimatum: {CURRENCY_LONG} +STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Reditus Aestimatus: {CURRENCY_LONG} + +# Saveload messages +STR_ERROR_SAVE_STILL_IN_PROGRESS :{WHITE}Adhuc in servando,{}maneas usque ad terminum! +STR_ERROR_AUTOSAVE_FAILED :{WHITE}Autoservare defecit +STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Non poterat discum legere +STR_ERROR_GAME_SAVE_FAILED :{WHITE}Servare Ludum Defecit{}{STRING} +STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Non poterat fasciculum delere +STR_ERROR_GAME_LOAD_FAILED :{WHITE}Legere Ludum Defecit{}{STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Mendum internum: {STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ludus corruptus - {STRING} +STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Ludus servatus est in editione noviore +STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Fasciculus non legibilis est +STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Fasciculus non scriptabilis est +STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Integreitatem datorum collegere defecit +STR_GAME_SAVELOAD_NOT_AVAILABLE : +STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Ludus servatus est in editione sine transviariis raedis. Omnes transviariae raedae remotae sunt + +# Map generation messages +STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Creatio tabulae constita...{}... nulli loci oppidis idonei +STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... nullum adest oppidum in hoc scaenario + +STR_ERROR_PNGMAP :{WHITE}Non potest legere ex PNG... +STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... fasciculus non inventus +STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... non poterat convertere typum imaginis. 8 vel 24-bit PNG necesse est +STR_ERROR_PNGMAP_MISC :{WHITE}... aliquid defecit (fortasse fasciculus corruptus) + +STR_ERROR_BMPMAP :{WHITE}Non potest legere ex BMP... +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... non poterat convertere typum imaginis + +STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... imago nimis magna + +STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Admonitio magnitudinis +STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Non bene censetur nimis mutare magnitudinem tabulae. Visne pergere? + +# Soundset messages +STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Modo fundamentum sonicum substitutum repertum est. Si vis sonos audire, impone verum fundamentum sonicum ex inventario interretiale + +# Screenshot related messages +STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Imago conspectus ingens +STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Imago conspectus resolutionem {COMMA} x {COMMA} habebit. Forsitan diu erit in imaginem faciendo. Visne pergere? + +STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Imago servata est nomine '{STRING}' +STR_ERROR_SCREENSHOT_FAILED :{WHITE}Creatio imaginis defecit! + +# Error message titles +STR_ERROR_MESSAGE_CAPTION :{YELLOW}Nuntium +STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}{STRING} affert nuntium + +# Generic construction errors +STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Extra tabulam est +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Nimis propinquus est fini tabulae +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Pecunia deest - {CURRENCY_LONG} poscitur +STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Terra plana necesse est +STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terra prave acclivis est +STR_ERROR_CAN_T_DO_THIS :{WHITE}Non licet... +STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Aedificum oportet destructum esse +STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Non licet locum vacuefacere... +STR_ERROR_SITE_UNSUITABLE :{WHITE}... situs non idoneus +STR_ERROR_ALREADY_BUILT :{WHITE}... iam structum +STR_ERROR_OWNED_BY :{WHITE}... possessus a {STRING} +STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... situs ab alia societate possessus +STR_ERROR_TERRAFORM_LIMIT_REACHED :{WHITE}... finis plasmationis contingitur +STR_ERROR_CLEARING_LIMIT_REACHED :{WHITE}... finis tegulas vacuefaciendi contingitur +STR_ERROR_TREE_PLANT_LIMIT_REACHED :{WHITE}... finis arbores serendi contingitur +STR_ERROR_NAME_MUST_BE_UNIQUE :{WHITE}Oportet nomen unicum esse +STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRING} obstat +STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Non licet ludo intermisso + +# Local authority errors +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} auctoritas vicinalis vetat +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN} auctoritas vicinalis aliud aeroportum in hoc oppido struere vetat +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} auctoritas vicinalis aliud aeroportum struere vetat soniti causa +STR_ERROR_BRIBE_FAILED :{WHITE}Largitio tua animadversa est ab inquisitore regionale! + +# Levelling errors +STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Non licet hanc terram tollere... +STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Non licet hanc terram inclinere... +STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Non licet hanc terram levigare... +STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Cuniculus fractus esset +STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... iam ad maris aequor est +STR_ERROR_TOO_HIGH :{WHITE}... nimis alta est +STR_ERROR_ALREADY_LEVELLED :{WHITE}... iam plana est +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}Postea pons supernus nimis altus sit. + +# Company related errors +STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Non licet societatem renominare... +STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Non licet praesidem renominare... + +STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}... creditum maximum est {CURRENCY_LONG} +STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Non licet plurem pecuniae mutuari... +STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... non est creditum solvendum +STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} poscitur +STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Non licet creditum reddere... +STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Non licet pecuniam mutuam largiri... +STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Non licet societatem emere... +STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Non licet sedem societatis struere... +STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Non licet quadrantem sortium huius societatis emere... +STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}Non licet quadrantem sortium huius societatis vendere... +STR_ERROR_PROTECTED :{WHITE}Nondum licet sortes societatis mercari... + +# Town related errors +STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Non licet oppida condi +STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Non licet oppidum renominare... +STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Non licet oppidum condere hic... +STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Non licet augere oppidum... +STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... nimis prope finem tabulae +STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... nimis prope aliud oppidum +STR_ERROR_TOO_MANY_TOWNS :{WHITE}... nimis oppida adsunt +STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... plus spatium tabulae deest +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Oppidum non vias faciet. Potest sinere vias facere in Electionibus->Circumiecta->Oppida +STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Constructio viaria agitur +STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Non licet oppidum delere...{}Statio receptaculumve est oppido sive non licet tegulam oppidi removere +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... non est locus effigiei idoneus in medio oppidi + +# Industry related errors +STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... nimis industriae adsunt +STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Non licet industrias condere... +STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Non licet {STRING.acc} hic strui... +STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Non licet industriam huius typi hic struere... +STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... nimis prope aliam industriam +STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... oportet oppidum conditum esse +STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... modo semel per oppidum licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... modo in oppidis quae plures quam 1200 incolas habent licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... modo in silvis pluvialibus licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... modo in desertis licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... modo in oppidis licet strui (in locis aedificiorum) +STR_ERROR_CAN_ONLY_BE_BUILT_NEAR_TOWN_CENTER :{WHITE}... modo apud media oppidorum licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_IN_LOW_AREAS :{WHITE}... modo in locis humilibus licet strui +STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}... modo apud fines tabulae licet strui +STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... modo licet silvas struere supra lineam nivis +STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... modo supra lineam nivis licet strui +STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... modo infra lineam nivis licet strui + +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Nulli loci idonei erat ad industrias '{STRING}' construendas +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Muta parametra tabulam generandi ut melior tabula habeas + +# Station construction related errors +STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Non licet stationem ferriviariam hic struere... +STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}Non licet stationem laophoricam hic struere... +STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}Non licet stationem autoplaustricam hic struere... +STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Non licet stationem transviariam vectoriam hic struere... +STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Non licet stationem transviariam onerariam hic struere... +STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Non licet navale hic struere... +STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Non licet aeroportum hic struere... + +STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Apposita est pluribus stationibus +STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... statio nimis strata +STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Nimis stationes adsunt +STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Nimis partes stationum ferriviariarum adsunt +STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Nimis stationes laophoricae adsunt +STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Nimis stationes autoplaustricae adsunt +STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Nimis prope aliam stationem +STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Nimis prope aliud navale +STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Nimis prope aliud aeroportum +STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Non licet stationem renominare... +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... via oppido est +STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... viae directio non convenit +STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... stationi perviae non licet esse curva +STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... stationi perviae non licet compita habere + +# Station destruction related errors +STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Non licet partem stationis removere... +STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Stationem ferriviariam removere necesse est +STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Non licet stationem laophoricam removere... +STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Non licet stationem autoplaustricam removere... +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Non licet stationem transviariam vectoria removere... +STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Non licet stationem transviariam oneraria removere... +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Stationem viariam removere necesse est +STR_ERROR_THERE_IS_NO_STATION :{WHITE}... non est statio + +STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Necesse est stationem ferriviariam destruere +STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Necesse est stationem laophoricam destruere +STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Necesse est stationem autoplaustricam destruere +STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Necesse est stationem transviariam vectoria destruere +STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Necesse est stationem transviariam oneraria destruere +STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Necesse est navale destruere +STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Necesse est aeroportum destruere + +# Waypoint related errors +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Appositus est pluribus quam uni interlocis +STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Nimis prope alium interlocum + +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Non licet interlocum ferriviarium hic struere... +STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Non licet signum monitorium huc ponere... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Non licet interlocum renominare... + +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Non licet interlocum removere... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Necesse est interlocum ferriviarium removere +STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... signum monitorium obstat +STR_ERROR_BUOY_IS_IN_USE :{WHITE}... signum monitorium ab alia societate usum + +# Depot related errors +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Non licet receptaculum hamaxostichorum hic struere... +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Non licet receptaculum viarium hic struere... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Non licet receptaculum transviarium hic struere... +STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Non licet receptaculum navium hic struere... + +STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}Non licet receptaculum renominare... + +STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... oportet constitum esse in receptaculo +STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... oportet constitum esse in receptaculo +STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... oportet constitam esse in receptaculo +STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... oportet constitum esse in tugurio + +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Commutare hamaxostichum licet modo dum manet in receptaculo +STR_ERROR_TRAIN_TOO_LONG :{WHITE}Hamaxostichus nimis longus +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Non licet vehiculum reflectere... +STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... constat ex pluribus unitatibus +STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Typi ferriviarum impares + +STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Non licet vehiculum movere... +STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}Hamaxa postrema semper hamaxam primam comitat +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Non potest iter ad receptaculum invenire +STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Non potest receptaculum invenire + +STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Typus receptaculi impar + +# Autoreplace related errors +STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} nimis long(G us a um) est post commutationem +STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Nullae regulae automutandi/autoredimendi +STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(finis pecuniae) + +# Rail construction errors +STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Compositio astariorum impossibilis +STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Necesse est signalia delere +STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Nulla astaria idonea +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Necesse est ferriviam removere +STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Via est monodromus vel obstructa +STR_ERROR_CROSSING_DISALLOWED :{WHITE}Non licet huic typo ferriviae habere transitus +STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Non licet signalia hic struere... +STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Non licet ferriviam hic struere... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Non licet ferriviam removere hic... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Non licet signalia removere hic... +STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Non licet signalia convertere hic... +STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... nulla adest ferrivia +STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... nulla adsunt signalia + +STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Non licet typum ferriviae convertere hic... + +# Road construction errors +STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Necesse est viam removere +STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... monodromis non licet compita habere +STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Non licet viam hic struere... +STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Non licet ferriviam stratariam hic struere... +STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Non licet viam removere hic... +STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Non licet ferriviam stratariam removere hic... +STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... nullae adsunt viae +STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... nullae adsunt ferriviae stratariae + +# Waterway construction errors +STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Non licet canales hic struere... +STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}Non licet cataractas hic struere... +STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}Non licet fluvios hic ponere... +STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... oportet supra mare situm esse +STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... non licet in aqua struere +STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... non licet in alto struere +STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... non licet in canale struere +STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}... non licet in flucio struere +STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Necesse est canalem removere +STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}Non licet aquae ductum hic struere... + +# Tree related errors +STR_ERROR_TREE_ALREADY_HERE :{WHITE}... arbor iam adest +STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... terra non convenit huic arboris typo +STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Non licet hic arbores serere... + +# Bridge related errors +STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Non licet pontem hic struere... +STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Necesse est pontem destruere +STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Non licet initium et terminum in eodem loco esse +STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Non sunt eadem altitudo capitibus pontis +STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Pons nimis humilis est huic terrae +STR_ERROR_BRIDGE_TOO_HIGH_FOR_TERRAIN :{WHITE}Pons nimis altus est huic terrae +STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Necesse est initium et terminum in linea esse +STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... fines pontis oportet ambos in terra esse +STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... pons nimis longus +STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}Pons extra tabulam finiatur + +# Tunnel related errors +STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Non licet cuniculus hic strui... +STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Situs non idoneus ad cuniculi portam +STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Necesse est cuniculum destruere +STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Alius cuniculus obstat +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}Cuniculus extra tabulam finiatur +STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}Non licet terram cuniculi finis plasmare +STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... cuniculus nimis longus + +# Object related errors +STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... nimis ornamenta adsunt +STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Non licet ornamentum struere... +STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Ornamentum obstat +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... sedes societatis obstat +STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Non licet hanc terram emere... +STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... nam posessor iam es! + +# Group related errors +STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Non licet gregem creare... +STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Non licet gregem delere... +STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Non licet gregem renominare... +STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Non licet gregem parentem eligere... +STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Non licet omnia vehicula e grege removere... +STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Non licet vehiculum huic gregi addere... +STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Non licet vehicula communia gregi addere... + +# Generic vehicle errors +STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Hamaxostichus obstat +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Vehiculum viarium obstat +STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Navis obstat +STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aeroplanum obstat + +STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Non licet hamaxostichum reficere... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Non licet vehiculum reficere... +STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Non licet navem reficere... +STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Non licet aeroplanum reficere... + +STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}Non licet hamaxostichum nominare... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Non licet vehiculum nominare... +STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Non licet navem nominare... +STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Non licet aeroplanum nominare... + +STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Non licet hamaxostichum sistere incohareve... +STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Non licet vehiculum viarium sistere incohareve... +STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Non licet navem sistere incohareve... +STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Non licet aeroplanum sistere incohareve... + +STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Non licet mittere hamaxostichum ad receptaculum... +STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Non licet mittere vehiculum ad receptaculum... +STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Non licet mittere navem d receptaculum... +STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Non licet mittere aeroplanum ad tugurium... + +STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Non licet emere vehiculum ferriviarium... +STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Non licet emere vehiculum viarium... +STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Non licet emere navem... +STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Non licet emere aeroplanum... + +STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Non licet renominare hamaxostichi typum... +STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Non licet renominare vehiculi viarii typum... +STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Non licet renominare navis typum... +STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Non licet renominare aeroplani typum.. + +STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Non licet vendere vehiculum ferriviarium... +STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Non licet vendere vehiculum viarium... +STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Non licet vendere navem... +STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Non licet vendere aeroplanum... + +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Vehiculum non parabile est +STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Vehiculum non parabile est +STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Navis non parabilis est +STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Aeroplanum non parabile est + +STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Nimis vehicula adsunt in ludo +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Non licet intervallum ministrationis mutare... + +STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehiculum est destructum! + +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Nulla vehicula omnino parabilia erunt +STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Muta configurationem NewGRF tuam +STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nulla vehicula adhuc parabilia sunt +STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Incipe ludum post {DATE_SHORT} sive eligere idoneum NewGRF quod vehicula antiqua parat + +# Specific vehicle errors +STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Non licet tramen impellere post signale... +STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Non licet tramini cursum reflectere... +STR_ERROR_TRAIN_START_NO_POWER :Nulla potestas hamaxosticho est + +STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Non licet vehiculo viario cursum reflectere... + +STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Aeroplanum adhuc volat + +# Order related errors +STR_ERROR_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Non est spatium iussorum +STR_ERROR_TOO_MANY_ORDERS :{WHITE}Nimium iussa +STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}Non licet novum iussum addere... +STR_ERROR_CAN_T_DELETE_THIS_ORDER :{WHITE}Non licet hoc iussum delere... +STR_ERROR_CAN_T_MODIFY_THIS_ORDER :{WHITE}Non licet hoc iussum mutare... +STR_ERROR_CAN_T_MOVE_THIS_ORDER :{WHITE}Non licet hoc iussum movere... +STR_ERROR_CAN_T_SKIP_ORDER :{WHITE}Non licet transilire iussum currens... +STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}Non licet salire ad iussum electum... +STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... vehiculum non potest ire ad omnes stationes +STR_ERROR_CAN_T_ADD_ORDER :{WHITE}... vehiculum non potest ire ad illam stationem +STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}... vehiculum quod hoc iussum communicat non potest ire ad illam stationem + +STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}Non licet iussa communicare... +STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}Non licet desinere communicationem iussorum... +STR_ERROR_CAN_T_COPY_ORDER_LIST :{WHITE}Non licet iussa transcribere... +STR_ERROR_TOO_FAR_FROM_PREVIOUS_DESTINATION :{WHITE}... nimis procul ab destinato priore +STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... aeroplano non est satis distantia volatus + +# Timetable related errors +STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Non licet vehiculo dare horarium... +STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vehicula modo in stationibus possunt manere +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Vehiculum non consistit huic stationi + +# Sign related errors +STR_ERROR_TOO_MANY_SIGNS :{WHITE}... nimis signa adsunt +STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Non licet signum ponere... +STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Non licet signum renominare... +STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Non licet signum delere... + +# Translatable comment for OpenTTD's desktop shortcut +STR_DESKTOP_SHORTCUT_COMMENT :Ludus computatralis simulatorius cuius fundamentum est Transport Tycoon Deluxe + +# Translatable descriptions in media/baseset/*.ob* files +STR_BASEGRAPHICS_DOS_DESCRIPTION :Graphica ex editione originale Transport Tycoon Deluxe DOS. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Graphica ex editione originale Transport Tycoon Deluxe DOS (Germanica). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Graphica ex editione originale Transport Tycoon Deluxe Windows. +STR_BASESOUNDS_DOS_DESCRIPTION :Soni ex editione originale Transport Tycoon Deluxe DOS. +STR_BASESOUNDS_WIN_DESCRIPTION :Soni ex editione originale Transport Tycoon Deluxe Windows. +STR_BASESOUNDS_NONE_DESCRIPTION :Sarcina sonorum sine ullis sonis. +STR_BASEMUSIC_WIN_DESCRIPTION :Musica ex editione originale Transport Tycoon Deluxe Windows. +STR_BASEMUSIC_NONE_DESCRIPTION :Sarcina musicae sine ulla musica. + +##id 0x2000 +# Town building names +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_1 :Altum multizonium officinarum +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Multizonium officinarum +STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Parva Insula +STR_TOWN_BUILDING_NAME_CHURCH_1 :Ecclesia +STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Magnum multizonium officinarum +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Domus urbanae +STR_TOWN_BUILDING_NAME_HOTEL_1 :Deversorium +STR_TOWN_BUILDING_NAME_STATUE_1 :Effigies +STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fons +STR_TOWN_BUILDING_NAME_PARK_1 :Hortus +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_2 :Multizonium officinarum +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_1 :Tabernae et officinae +STR_TOWN_BUILDING_NAME_MODERN_OFFICE_BUILDING_1 :Modernum multizonium officinarum +STR_TOWN_BUILDING_NAME_WAREHOUSE_1 :Horreum +STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_3 :Multizonium officinarum +STR_TOWN_BUILDING_NAME_STADIUM_1 :Stadium +STR_TOWN_BUILDING_NAME_OLD_HOUSES_1 :Domus Antiquae +STR_TOWN_BUILDING_NAME_COTTAGES_1 :Domunculae +STR_TOWN_BUILDING_NAME_HOUSES_1 :Domus +STR_TOWN_BUILDING_NAME_FLATS_1 :Insula +STR_TOWN_BUILDING_NAME_TALL_OFFICE_BLOCK_2 :Altum multizonium officinarum +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_2 :Tabernae et officinae +STR_TOWN_BUILDING_NAME_SHOPS_AND_OFFICES_3 :Tabernae et officinae +STR_TOWN_BUILDING_NAME_THEATER_1 :Theatrum +STR_TOWN_BUILDING_NAME_STADIUM_2 :Stadium +STR_TOWN_BUILDING_NAME_OFFICES_1 :Officinae +STR_TOWN_BUILDING_NAME_HOUSES_2 :Domus +STR_TOWN_BUILDING_NAME_CINEMA_1 :Cinemateum +STR_TOWN_BUILDING_NAME_SHOPPING_MALL_1 :Emporium +STR_TOWN_BUILDING_NAME_IGLOO_1 :Iglu +STR_TOWN_BUILDING_NAME_TEPEES_1 :Tipi +STR_TOWN_BUILDING_NAME_TEAPOT_HOUSE_1 :Domus Urceolaris +STR_TOWN_BUILDING_NAME_PIGGY_BANK_1 :Argentaria Porcellina + +##id 0x4800 +# industry names +STR_INDUSTRY_NAME_COAL_MINE :{G=f}Carbonifodina +STR_INDUSTRY_NAME_COAL_MINE.gen :{G=f}carbonifodinae +STR_INDUSTRY_NAME_COAL_MINE.acc :{G=f}Carbonifodinam +STR_INDUSTRY_NAME_COAL_MINE.abl :{G=f}Carbonifodina +STR_INDUSTRY_NAME_POWER_STATION :{G=f}Electrificina +STR_INDUSTRY_NAME_POWER_STATION.gen :{G=f}electrificinae +STR_INDUSTRY_NAME_POWER_STATION.acc :{G=f}Electrificinam +STR_INDUSTRY_NAME_POWER_STATION.abl :{G=f}Electrificina +STR_INDUSTRY_NAME_SAWMILL :{G=f}Serraria +STR_INDUSTRY_NAME_SAWMILL.gen :{G=f}serrariae +STR_INDUSTRY_NAME_SAWMILL.acc :{G=f}Serrariam +STR_INDUSTRY_NAME_SAWMILL.abl :{G=f}Serraria +STR_INDUSTRY_NAME_FOREST :{G=f}Silva +STR_INDUSTRY_NAME_FOREST.gen :{G=f}silvae +STR_INDUSTRY_NAME_FOREST.acc :{G=f}Silvam +STR_INDUSTRY_NAME_FOREST.abl :{G=f}Silva +STR_INDUSTRY_NAME_OIL_REFINERY :{G=n}Ergasterium Petrolearium +STR_INDUSTRY_NAME_OIL_REFINERY.gen :{G=n}ergasterii petrolearii +STR_INDUSTRY_NAME_OIL_REFINERY.acc :{G=n}Ergasterium Petrolearium +STR_INDUSTRY_NAME_OIL_REFINERY.abl :{G=n}Ergasterio Petroleario +STR_INDUSTRY_NAME_OIL_RIG :{G=m}Suggestus Petrolearius +STR_INDUSTRY_NAME_OIL_RIG.gen :{G=m}suggestus petrolearii +STR_INDUSTRY_NAME_OIL_RIG.acc :{G=m}Suggestum Petrolearium +STR_INDUSTRY_NAME_OIL_RIG.abl :{G=m}Suggestu Petroleario +STR_INDUSTRY_NAME_FACTORY :{G=f}Fabrica +STR_INDUSTRY_NAME_FACTORY.gen :{G=f}fabricae +STR_INDUSTRY_NAME_FACTORY.acc :{G=f}Fabricam +STR_INDUSTRY_NAME_FACTORY.abl :{G=f}Fabrica +STR_INDUSTRY_NAME_PRINTING_WORKS :{G=n}Impressorium +STR_INDUSTRY_NAME_PRINTING_WORKS.gen :{G=n}impressorii +STR_INDUSTRY_NAME_PRINTING_WORKS.acc :{G=n}Impressorium +STR_INDUSTRY_NAME_PRINTING_WORKS.abl :{G=n}Impressorio +STR_INDUSTRY_NAME_STEEL_MILL :{G=f}Fabrica Chalybeia +STR_INDUSTRY_NAME_STEEL_MILL.gen :{G=f}fabricae chalybeiae +STR_INDUSTRY_NAME_STEEL_MILL.acc :{G=f}Fabricam Chalybeiam +STR_INDUSTRY_NAME_STEEL_MILL.abl :{G=f}Fabrica Chalybeia +STR_INDUSTRY_NAME_FARM :{G=m}Fundus +STR_INDUSTRY_NAME_FARM.gen :{G=m}fundi +STR_INDUSTRY_NAME_FARM.acc :{G=m}Fundum +STR_INDUSTRY_NAME_FARM.abl :{G=m}Fundo +STR_INDUSTRY_NAME_COPPER_ORE_MINE :{G=f}Aerifodina +STR_INDUSTRY_NAME_COPPER_ORE_MINE.gen :{G=f}aerifodinae +STR_INDUSTRY_NAME_COPPER_ORE_MINE.acc :{G=f}Aerifodinam +STR_INDUSTRY_NAME_COPPER_ORE_MINE.abl :{G=f}Aerifodina +STR_INDUSTRY_NAME_OIL_WELLS :{G=mp}Putei Petrolearii +STR_INDUSTRY_NAME_OIL_WELLS.gen :{G=mp}puteorum petroleariorum +STR_INDUSTRY_NAME_OIL_WELLS.acc :{G=mp}Puteos Petrolearios +STR_INDUSTRY_NAME_OIL_WELLS.abl :{G=mp}Puteis Petroleariis +STR_INDUSTRY_NAME_BANK :{G=f}Argentaria +STR_INDUSTRY_NAME_BANK.gen :{G=f}argentariae +STR_INDUSTRY_NAME_BANK.acc :{G=f}Argentariam +STR_INDUSTRY_NAME_BANK.abl :{G=f}Argentaria +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :{G=f}Fabrica Cibaria +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.gen :{G=f}fabricae cibariae +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.acc :{G=f}Fabricam Cibariam +STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT.abl :{G=f}Fabrica Cibaria +STR_INDUSTRY_NAME_PAPER_MILL :{G=f}Fabrica Chartaria +STR_INDUSTRY_NAME_PAPER_MILL.gen :{G=f}fabricae chartariae +STR_INDUSTRY_NAME_PAPER_MILL.acc :{G=f}Fabricam Chartariam +STR_INDUSTRY_NAME_PAPER_MILL.abl :{G=f}Fabrica Chartaria +STR_INDUSTRY_NAME_GOLD_MINE :{G=f}Aurifodina +STR_INDUSTRY_NAME_GOLD_MINE.gen :{G=f}aurifodinae +STR_INDUSTRY_NAME_GOLD_MINE.acc :{G=f}Aurifodinam +STR_INDUSTRY_NAME_GOLD_MINE.abl :{G=f}Aurifodina +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :{G=f}Argentaria +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.gen :{G=f}argentariae +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.acc :{G=f}Argentariam +STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC.abl :{G=f}Argentaria +STR_INDUSTRY_NAME_DIAMOND_MINE :{G=f}Adamantifodina +STR_INDUSTRY_NAME_DIAMOND_MINE.gen :{G=f}adamantifodinae +STR_INDUSTRY_NAME_DIAMOND_MINE.acc :{G=f}Adamantifodinam +STR_INDUSTRY_NAME_DIAMOND_MINE.abl :{G=f}Adamantifodina +STR_INDUSTRY_NAME_IRON_ORE_MINE :{G=f}Ferrifodina +STR_INDUSTRY_NAME_IRON_ORE_MINE.gen :{G=f}ferrifodinae +STR_INDUSTRY_NAME_IRON_ORE_MINE.acc :{G=f}Ferrifodinam +STR_INDUSTRY_NAME_IRON_ORE_MINE.abl :{G=f}Ferrifodina +STR_INDUSTRY_NAME_FRUIT_PLANTATION :{G=n}Arbustum Fructuarium +STR_INDUSTRY_NAME_FRUIT_PLANTATION.gen :{G=n}arbusti fructuarii +STR_INDUSTRY_NAME_FRUIT_PLANTATION.acc :{G=n}Arbustum Fructuarium +STR_INDUSTRY_NAME_FRUIT_PLANTATION.abl :{G=n}Arbusto Fructuario +STR_INDUSTRY_NAME_RUBBER_PLANTATION :{G=n}Arbustum Gummosum +STR_INDUSTRY_NAME_RUBBER_PLANTATION.gen :{G=n}arbusti gummosi +STR_INDUSTRY_NAME_RUBBER_PLANTATION.acc :{G=n}Arbustum Gummosum +STR_INDUSTRY_NAME_RUBBER_PLANTATION.abl :{G=n}Arbusto Gummoso +STR_INDUSTRY_NAME_WATER_SUPPLY :{G=m}Fons Aquae +STR_INDUSTRY_NAME_WATER_SUPPLY.gen :{G=m}fontis aquae +STR_INDUSTRY_NAME_WATER_SUPPLY.acc :{G=m}Fontem Aquae +STR_INDUSTRY_NAME_WATER_SUPPLY.abl :{G=m}Fonte Aquae +STR_INDUSTRY_NAME_WATER_TOWER :{G=f}Turris Aquaria +STR_INDUSTRY_NAME_WATER_TOWER.gen :{G=f}turris aquariae +STR_INDUSTRY_NAME_WATER_TOWER.acc :{G=f}Turrim Aquariam +STR_INDUSTRY_NAME_WATER_TOWER.abl :{G=f}Turri Aquaria +STR_INDUSTRY_NAME_FACTORY_2 :{G=f}Fabrica +STR_INDUSTRY_NAME_FACTORY_2.gen :{G=f}fabricae +STR_INDUSTRY_NAME_FACTORY_2.acc :{G=f}Fabricam +STR_INDUSTRY_NAME_FACTORY_2.abl :{G=f}Fabrica +STR_INDUSTRY_NAME_FARM_2 :{G=m}Fundus +STR_INDUSTRY_NAME_FARM_2.gen :{G=m}fundi +STR_INDUSTRY_NAME_FARM_2.acc :{G=m}Fundum +STR_INDUSTRY_NAME_FARM_2.abl :{G=m}Fundo +STR_INDUSTRY_NAME_LUMBER_MILL :{G=np}Castra Lignatorum +STR_INDUSTRY_NAME_LUMBER_MILL.gen :{G=np}castrorum lignatorum +STR_INDUSTRY_NAME_LUMBER_MILL.acc :{G=np}Castra Lignatorum +STR_INDUSTRY_NAME_LUMBER_MILL.abl :{G=np}Castris Lignatorum +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST :{G=f}Silva Saccari Xylini +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.gen :{G=f}silvae saccari xylini +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.acc :{G=f}Silvam Saccari Xylini +STR_INDUSTRY_NAME_COTTON_CANDY_FOREST.abl :{G=f}Silva Saccari Xylini +STR_INDUSTRY_NAME_CANDY_FACTORY :{G=f}Fabrica Bellarica +STR_INDUSTRY_NAME_CANDY_FACTORY.gen :{G=f}fabricae bellaricae +STR_INDUSTRY_NAME_CANDY_FACTORY.acc :{G=f}Fabricam Bellaricam +STR_INDUSTRY_NAME_CANDY_FACTORY.abl :{G=f}Fabrica Bellarica +STR_INDUSTRY_NAME_BATTERY_FARM :{G=m}Fundus Pilarum Electricarum +STR_INDUSTRY_NAME_BATTERY_FARM.gen :{G=m}fundi pilarum electricarum +STR_INDUSTRY_NAME_BATTERY_FARM.acc :{G=m}Fundum Pilarum Electricarum +STR_INDUSTRY_NAME_BATTERY_FARM.abl :{G=m}Fundo Pilarum Electricarum +STR_INDUSTRY_NAME_COLA_WELLS :{G=mp}Putei Colae +STR_INDUSTRY_NAME_COLA_WELLS.gen :{G=mp}puteorum colae +STR_INDUSTRY_NAME_COLA_WELLS.acc :{G=mp}Puteos Colae +STR_INDUSTRY_NAME_COLA_WELLS.abl :{G=mp}Puteis Colae +STR_INDUSTRY_NAME_TOY_SHOP :{G=f}Taberna Ludicrorum +STR_INDUSTRY_NAME_TOY_SHOP.gen :{G=f}tabernae ludicrorum +STR_INDUSTRY_NAME_TOY_SHOP.acc :{G=f}Tabernam Ludicrorum +STR_INDUSTRY_NAME_TOY_SHOP.abl :{G=f}Taberna Ludicrorum +STR_INDUSTRY_NAME_TOY_FACTORY :{G=f}Fabrica Ludicrorum +STR_INDUSTRY_NAME_TOY_FACTORY.gen :{G=f}fabricae ludicrorum +STR_INDUSTRY_NAME_TOY_FACTORY.acc :{G=f}Fabricam Ludicrorum +STR_INDUSTRY_NAME_TOY_FACTORY.abl :{G=f}Fabrica Ludicrorum +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS :{G=mp}Fontes Plasticae +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.gen :{G=mp}fontium plasticae +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.acc :{G=mp}Fontes Plasticae +STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS.abl :{G=mp}Fontibus Plasticae +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY :{G=f}Fabrica Potionum Carbonatarum +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.gen :{G=f}fabricae potionum carbonatarum +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.acc :{G=f}Fabricam Potionum Carbonatarum +STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY.abl :{G=f}Fabrica Potionum Carbonatarum +STR_INDUSTRY_NAME_BUBBLE_GENERATOR :{G=n}Generatrum Bullarum +STR_INDUSTRY_NAME_BUBBLE_GENERATOR.gen :{G=n}generatri bullarum +STR_INDUSTRY_NAME_BUBBLE_GENERATOR.acc :{G=n}Generatrum Bullarum +STR_INDUSTRY_NAME_BUBBLE_GENERATOR.abl :{G=n}Generatro Bullarum +STR_INDUSTRY_NAME_TOFFEE_QUARRY :{G=fp}Lapicidinae Sacchari Tosti +STR_INDUSTRY_NAME_TOFFEE_QUARRY.gen :{G=fp}lapicidinarum sacchari tosti +STR_INDUSTRY_NAME_TOFFEE_QUARRY.acc :{G=fp}Lapicidinas Sacchari Tosti +STR_INDUSTRY_NAME_TOFFEE_QUARRY.abl :{G=fp}Lapicidinis Sacchari Tosti +STR_INDUSTRY_NAME_SUGAR_MINE :{G=f}Saccharifodina +STR_INDUSTRY_NAME_SUGAR_MINE.gen :{G=f}saccharifodinae +STR_INDUSTRY_NAME_SUGAR_MINE.acc :{G=f}Saccharifodinam +STR_INDUSTRY_NAME_SUGAR_MINE.abl :{G=f}Saccharifodina + +############ WARNING, using range 0x6000 for strings that are stored in the savegame +############ These strings may never get a new id, or savegames will break! +##id 0x6000 +STR_SV_EMPTY : +STR_SV_UNNAMED :Sine Nomine +STR_SV_TRAIN_NAME :Hamaxostichus {COMMA} +STR_SV_ROAD_VEHICLE_NAME :Vehiculum Viarium {COMMA} +STR_SV_SHIP_NAME :Navis {COMMA} +STR_SV_AIRCRAFT_NAME :Aeroplanum {COMMA} + +STR_SV_STNAME :{STRING} +STR_SV_STNAME_NORTH :{STRING} Borealis +STR_SV_STNAME_SOUTH :{STRING} Australis +STR_SV_STNAME_EAST :{STRING} Orientalis +STR_SV_STNAME_WEST :{STRING} Occidentalis +STR_SV_STNAME_CENTRAL :{STRING} Centralis +STR_SV_STNAME_TRANSFER :{STRING} Translatio +STR_SV_STNAME_HALT :{STRING} Mansio +STR_SV_STNAME_VALLEY :{STRING} Valles +STR_SV_STNAME_HEIGHTS :{STRING} Alta +STR_SV_STNAME_WOODS :{STRING} Nemus +STR_SV_STNAME_LAKESIDE :{STRING} Acta +STR_SV_STNAME_EXCHANGE :{STRING} Cambio +STR_SV_STNAME_AIRPORT :{STRING} Aeroportus +STR_SV_STNAME_OILFIELD :{STRING} Oilfield +STR_SV_STNAME_MINES :{STRING} Fodinae +STR_SV_STNAME_DOCKS :{STRING} Navalia +STR_SV_STNAME_BUOY :{STRING} +STR_SV_STNAME_WAYPOINT :{STRING} +##id 0x6020 +STR_SV_STNAME_ANNEXE :{STRING} Annexa +STR_SV_STNAME_SIDINGS :{STRING} Deverticulum +STR_SV_STNAME_BRANCH :{STRING} Ramus +STR_SV_STNAME_UPPER :{STRING} Supera +STR_SV_STNAME_LOWER :{STRING} Infera +STR_SV_STNAME_HELIPORT :{STRING} Heliportus +STR_SV_STNAME_FOREST :{STRING} Silva +STR_SV_STNAME_FALLBACK :{STRING} Statio #{NUM} +############ end of savegame specific region! + +##id 0x8000 +# Vehicle names +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Diseliana Ploddyphut +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Diseliana Powernaut +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CHANEY_JUBILEE_STEAM :Chaney 'Jubilee' (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_GINZU_A4_STEAM :Ginzu 'A4' (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_8P_STEAM :SH '8P' (Vaporaria) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MANLEY_MOREL_DMU_DIESEL :Manley-Morel DMU (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_DASH_DIESEL :'Dash' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_HENDRY_25_DIESEL :SH/Hendry '25' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_UU_37_DIESEL :UU '37' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_FLOSS_47_DIESEL :Floss '47' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_4000_DIESEL :CS 4000 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CS_2400_DIESEL :CS 2400 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_CENTENNIAL_DIESEL :Centennial (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KELLING_3100_DIESEL :Kelling 3100 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_TURNER_TURBO_DIESEL :Turner Turbo (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_1000_DIESEL :MJS 1000 (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_125_DIESEL :SH '125' (Diseliana) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_30_ELECTRIC :SH '30' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Electrica) +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Currus Vectoralis +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Currus Cursualis +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Plaustrum Carbonarium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Cisterna Petrolearia +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Currus Pecuarius +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Currus Mercium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GRAIN_HOPPER :Plaustrum Triticium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WOOD_TRUCK :Currus Ligni +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_IRON_ORE_HOPPER :Plaustrum Ferrarium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_STEEL_TRUCK :Currus Chalybeius +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_ARMORED_VAN :Currus Cataphractus +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FOOD_VAN :Currus Cibarius +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PAPER_TRUCK :Currus Chartarius +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COPPER_ORE_HOPPER :Plaustrum Aerarium +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_WATER_TANKER :Cisterna Aquaria +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :Plaustrum Fructus +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_RUBBER_TRUCK :Plaustrum Gummis +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_SUGAR_TRUCK :Plaustrum Sacchari +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COTTON_CANDY_HOPPER :Plaustrum Sacchari Xylini +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOFFEE_HOPPER :Plaustrum Sacchari Tosti +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BUBBLE_VAN :Currus Bullarum +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COLA_TANKER :Cisterna Colae +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_CANDY_VAN :Currus Bellaricus +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_TOY_VAN :Currus Ludicralis +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_BATTERY_TRUCK :Currus Pilarum Electricarum +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FIZZY_DRINK_TRUCK :Currus Potionum Carbonatarum +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PLASTIC_TRUCK :Currus Plasticarius +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99 +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Currus Vectoralis +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Currus Cursualis +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Plaustrum Carbonarium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Cisterna Petrolearia +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Currus Pecuarius +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Currus Mercium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GRAIN_HOPPER :Plaustrum Triticium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WOOD_TRUCK :Currus Ligni +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_IRON_ORE_HOPPER :Plaustrum Ferrarium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_STEEL_TRUCK :Currus Chalybeius +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_ARMORED_VAN :Currus Cataphractus +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FOOD_VAN :Currus Cibarius +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PAPER_TRUCK :Currus Chartarius +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COPPER_ORE_HOPPER :Plaustrum Aerarium +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_WATER_TANKER :Cisterna Aquaria +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FRUIT_TRUCK :Plaustrum Fructus +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_RUBBER_TRUCK :Plaustrum Gummis +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_SUGAR_TRUCK :Plaustrum Sacchari +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COTTON_CANDY_HOPPER :Plaustrum Sacchari Xylini +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOFFEE_HOPPER :Plaustrum Sacchari Tosti +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BUBBLE_VAN :Currus Bullarum +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COLA_TANKER :Cisterna Colae +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_CANDY_VAN :Currus Bellaricus +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Currus Ludicralis +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Currus Pilarum Electricarum +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Currus Potionum Carbonatarum +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Currus Plasticarius +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Electrica) +STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Currus Vectoralis +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Currus Cursualis +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Plaustrum Carbonarium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Cisterna Petrolearia +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Currus Pecuarius +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Currus Mercium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GRAIN_HOPPER :Plaustrum Triticium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WOOD_TRUCK :Currus Ligni +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_IRON_ORE_HOPPER :Plaustrum Ferrarium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_STEEL_TRUCK :Currus Chalybeius +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_ARMORED_VAN :Currus Cataphractus +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FOOD_VAN :Currus Cibarius +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PAPER_TRUCK :Currus Chartarius +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COPPER_ORE_HOPPER :Plaustrum Aerarium +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :Cisterna Aquaria +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FRUIT_TRUCK :Plaustrum Fructus +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_RUBBER_TRUCK :Plaustrum Gummis +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_SUGAR_TRUCK :Plaustrum Sacchari +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COTTON_CANDY_HOPPER :Plaustrum Sacchari Xylini +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOFFEE_HOPPER :Plaustrum Sacchari Tosti +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BUBBLE_VAN :Currus Bullarum +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COLA_TANKER :Cisterna Colae +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_CANDY_VAN :Currus Bellaricus +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_TOY_VAN :Currus Ludicralis +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_BATTERY_TRUCK :Currus Pilarum Electricarum +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_FIZZY_DRINK_TRUCK :Currus Potionum Carbonatarum +STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PLASTIC_TRUCK :Currus Plasticarius +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_REGAL_BUS :Laophorium MPS Regal +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_LEOPARD_BUS :Laophorium Hereford Leopard +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_BUS :Laophorium Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_MKII_SUPERBUS :Superlaophorium Foster MkII +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKI_BUS :Laophorium Ploddyphut MkI +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKII_BUS :Laophorium Ploddyphut MkII +STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Laophorium Ploddyphut MkIII +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Autoplaustrum Carbonarium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Autoplaustrum Carbonarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Autoplaustrum Carbonarium DW +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Autoplaustrum Cursuale MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Autoplaustrum Cursuale Reynard +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Autoplaustrum Cursuale Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Autoplaustrum Cursuale MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Autoplaustrum Cursuale Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Autoplaustrum Cursuale Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Autoplaustrum Petrolearium Witcombe +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Autoplaustrum Petrolearium Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Autoplaustrum Petrolearium Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Autoplaustrum PecuariumTalbott +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Autoplaustrum Pecuarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Autoplaustrum Pecuarium Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_GOODS_TRUCK :Autoplaustrum Mercium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_CRAIGHEAD_GOODS_TRUCK :Autoplaustrum Mercium Craighead +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GOODS_TRUCK :Autoplaustrum Mercium Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_HEREFORD_GRAIN_TRUCK :Autoplaustrum Triticium Hereford +STR_VEHICLE_NAME_ROAD_VEHICLE_THOMAS_GRAIN_TRUCK :Autoplaustrum Triticium Thomas +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_GRAIN_TRUCK :Autoplaustrum Triticium Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_WOOD_TRUCK :Autoplaustrum Caudicale Witcombe +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_WOOD_TRUCK :Autoplaustrum Caudicale Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_MORELAND_WOOD_TRUCK :Autoplaustrum Caudicale Moreland +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_IRON_ORE_TRUCK :Autoplaustrum Ferrarium MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_IRON_ORE_TRUCK :Autoplaustrum Ferrarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_IRON_ORE_TRUCK :Autoplaustrum Ferrarium Chippy +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_STEEL_TRUCK :Autoplaustrum Chalybeium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_STEEL_TRUCK :Autoplaustrum Chalybeium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_STEEL_TRUCK :Autoplaustrum Chalybeium Kelling +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_ARMORED_TRUCK :Autoplaustrum Cataphractum Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_ARMORED_TRUCK :Autoplaustrum Cataphractum Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_ARMORED_TRUCK :Autoplaustrum Cataphractum Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_FOOD_VAN :Autoplaustrum Cibarium Foster +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_FOOD_VAN :Autoplaustrum Cibarium Perry +STR_VEHICLE_NAME_ROAD_VEHICLE_CHIPPY_FOOD_VAN :Autoplaustrum Cibarium Chippy +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_PAPER_TRUCK :Autoplaustrum Chartarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_PAPER_TRUCK :Autoplaustrum Chartarium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_PAPER_TRUCK :Autoplaustrum Chartarium MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_COPPER_ORE_TRUCK :Autoplaustrum Aerarium MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COPPER_ORE_TRUCK :Autoplaustrum Aerarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_GOSS_COPPER_ORE_TRUCK :Autoplaustrum Aerarium Goss +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_WATER_TANKER :Autoplaustrum Aquarium Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_WATER_TANKER :Autoplaustrum Aquarium Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_WATER_TANKER :Autoplaustrum Aquarium MPS +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_FRUIT_TRUCK :Autoplaustrum Fructus Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_FRUIT_TRUCK :Autoplaustrum Fructus Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_KELLING_FRUIT_TRUCK :Autoplaustrum Fructus Kelling +STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_RUBBER_TRUCK :Autoplaustrum Gummis Balogh +STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_RUBBER_TRUCK :Autoplaustrum Gummis Uhl +STR_VEHICLE_NAME_ROAD_VEHICLE_RMT_RUBBER_TRUCK :Autoplaustrum Gummis RMT +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_SUGAR_TRUCK :Autoplaustrum Sacchari MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_SUGAR_TRUCK :Autoplaustrum Sacchari Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_SUGAR_TRUCK :Autoplaustrum Sacchari Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COLA_TRUCK :Autoplaustrum Colae MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COLA_TRUCK :Autoplaustrum Colae Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COLA_TRUCK :Autoplaustrum Colae Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_COTTON_CANDY :Autoplaustrum Sacchari Xylini MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_COTTON_CANDY :Autoplaustrum Sacchari Xylini Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_COTTON_CANDY_TRUCK :Autoplaustrum Sacchari Xylini Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOFFEE_TRUCK :Autoplaustrum Sacchari Tosti MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOFFEE_TRUCK :Autoplaustrum Sacchari Tosti Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOFFEE_TRUCK :Autoplaustrum Sacchari Tosti Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_TOY_VAN :Autoplaustrum Ludicrale MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_TOY_VAN :Autoplaustrum Ludicrale Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_TOY_VAN :Autoplaustrum Ludicrale Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_CANDY_TRUCK :Autoplaustrum Bellaricum MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_CANDY_TRUCK :Autoplaustrum Bellaricum Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_CANDY_TRUCK :Autoplaustrum Bellaricum Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BATTERY_TRUCK :Autoplaustrum Pilarum Electricarum MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BATTERY_TRUCK :Autoplaustrum Pilarum Electricarum Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BATTERY_TRUCK :Autoplaustrum Pilarum Electricarum Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_FIZZY_DRINK :Autoplaustrum Potionum Carbonatarum MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_FIZZY_DRINK :Autoplaustrum Potionum Carbonatarum Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_FIZZY_DRINK_TRUCK :Autoplaustrum Potionum Carbonatarum Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_PLASTIC_TRUCK :Autoplaustrum Plasticarium MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_PLASTIC_TRUCK :Autoplaustrum Plasticarium Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_PLASTIC_TRUCK :Autoplaustrum Plasticarium Wizzowow +STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_BUBBLE_TRUCK :Autoplaustrum Bullarum MightyMover +STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_BUBBLE_TRUCK :Autoplaustrum Bullarum Powernaught +STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_BUBBLE_TRUCK :Autoplaustrum Bullarum Wizzowow +STR_VEHICLE_NAME_SHIP_MPS_OIL_TANKER :Navis Petrolearia MPS +STR_VEHICLE_NAME_SHIP_CS_INC_OIL_TANKER :Navis Petrolearia CS-Inc. +STR_VEHICLE_NAME_SHIP_MPS_PASSENGER_FERRY :Navis Vectoria MPS +STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :Navis Vectoria FFP +STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Navis Illabans Bakewell 300 +STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Navis Vectoria Chugger-Chug +STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Navis Vectoria Shivershake +STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Navis Oneraria Yate +STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Navis Oneraria Bakewell +STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Navis Oneraria MightyMover +STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Navis Oneraria Powernaut +STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52 +STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count +STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart +STR_VEHICLE_NAME_AIRCRAFT_YATE_HAUGAN :Yate Haugan +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_COTSWALD_LB_3 :Bakewell Cotswald LB-3 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_8 :Bakewell Luckett LB-8 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_9 :Bakewell Luckett LB-9 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB80 :Bakewell Luckett LB80 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_10 :Bakewell Luckett LB-10 +STR_VEHICLE_NAME_AIRCRAFT_BAKEWELL_LUCKETT_LB_11 :Bakewell Luckett LB-11 +STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAC_1_11 :Yate Aerospace YAC 1-11 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_100 :Darwin 100 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_200 :Darwin 200 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_300 :Darwin 300 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_400 :Darwin 400 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_500 :Darwin 500 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_600 :Darwin 600 +STR_VEHICLE_NAME_AIRCRAFT_GURU_GALAXY :Guru Galaxy +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A21 :Airtaxi A21 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A31 :Airtaxi A31 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A32 :Airtaxi A32 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A33 :Airtaxi A33 +STR_VEHICLE_NAME_AIRCRAFT_YATE_AEROSPACE_YAE46 :Yate Aerospace YAe46 +STR_VEHICLE_NAME_AIRCRAFT_DINGER_100 :Dinger 100 +STR_VEHICLE_NAME_AIRCRAFT_AIRTAXI_A34_1000 :AirTaxi A34-1000 +STR_VEHICLE_NAME_AIRCRAFT_YATE_Z_SHUTTLE :Yate Z-Shuttle +STR_VEHICLE_NAME_AIRCRAFT_KELLING_K1 :Kelling K1 +STR_VEHICLE_NAME_AIRCRAFT_KELLING_K6 :Kelling K6 +STR_VEHICLE_NAME_AIRCRAFT_KELLING_K7 :Kelling K7 +STR_VEHICLE_NAME_AIRCRAFT_DARWIN_700 :Darwin 700 +STR_VEHICLE_NAME_AIRCRAFT_FFP_HYPERDART_2 :FFP Hyperdart 2 +STR_VEHICLE_NAME_AIRCRAFT_DINGER_200 :Dinger 200 +STR_VEHICLE_NAME_AIRCRAFT_DINGER_1000 :Dinger 1000 +STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_100 :Ploddyphut 100 +STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500 +STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1 +STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1 +STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer +STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Helicopterum Tricario +STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Helicopterum Guru X2 +STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Helicopterum Powernaut + +##id 0x8800 +# Formatting of some strings +STR_FORMAT_DATE_TINY :{STRING}-{STRING}-{NUM} +STR_FORMAT_DATE_SHORT :{STRING} {NUM} +STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} +STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} + +STR_FORMAT_BUOY_NAME :{TOWN} Signum Monitorium +STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Signum Monitorium #{COMMA} +STR_FORMAT_COMPANY_NUM :(Societas {COMMA}) +STR_FORMAT_GROUP_NAME :Grex {COMMA} +STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} +STR_FORMAT_INDUSTRY_NAME.acc :{TOWN} {STRING.acc} +STR_FORMAT_INDUSTRY_NAME.abl :{TOWN} {STRING.abl} +STR_FORMAT_WAYPOINT_NAME :{TOWN} Interlocus +STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Interlocus #{COMMA} + +STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Receptaculum Hamaxostichorum +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Receptaculum Hamaxostichorum #{COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Receptaculum Viarium +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Receptaculum Viarium #{COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Receptaculum Navium +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Receptaculum Navium #{COMMA} +STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Tugurium + +STR_UNKNOWN_STATION :statio ignota +STR_DEFAULT_SIGN_NAME :Signum +STR_COMPANY_SOMEONE :aliquis + +STR_SAVEGAME_NAME_DEFAULT :{COMPANY}, {STRING} +STR_SAVEGAME_NAME_SPECTATOR :Spectator, {1:STRING} + +# Viewport strings +STR_VIEWPORT_TOWN_POP :{WHITE}{TOWN} ({COMMA}) +STR_VIEWPORT_TOWN :{WHITE}{TOWN} +STR_VIEWPORT_TOWN_TINY_BLACK :{TINY_FONT}{BLACK}{TOWN} +STR_VIEWPORT_TOWN_TINY_WHITE :{TINY_FONT}{WHITE}{TOWN} + +STR_VIEWPORT_SIGN_SMALL_BLACK :{TINY_FONT}{BLACK}{SIGN} +STR_VIEWPORT_SIGN_SMALL_WHITE :{TINY_FONT}{WHITE}{SIGN} + +STR_VIEWPORT_STATION :{STATION} {STATION_FEATURES} +STR_VIEWPORT_STATION_TINY :{TINY_FONT}{STATION} + +STR_VIEWPORT_WAYPOINT :{WAYPOINT} +STR_VIEWPORT_WAYPOINT_TINY :{TINY_FONT}{WAYPOINT} + +# Simple strings to get specific types of data +STR_COMPANY_NAME :{COMPANY} +STR_COMPANY_NAME_COMPANY_NUM :{COMPANY} {COMPANY_NUM} +STR_DEPOT_NAME :{DEPOT} +STR_ENGINE_NAME :{ENGINE} +STR_HIDDEN_ENGINE_NAME :{ENGINE} (celatum) +STR_GROUP_NAME :{GROUP} +STR_INDUSTRY_NAME :{INDUSTRY} +STR_INDUSTRY_NAME.acc :{INDUSTRY.acc} +STR_INDUSTRY_NAME.abl :{INDUSTRY.abl} +STR_PRESIDENT_NAME :{PRESIDENT_NAME} +STR_SIGN_NAME :{SIGN} +STR_STATION_NAME :{STATION} +STR_TOWN_NAME :{TOWN} +STR_VEHICLE_NAME :{VEHICLE} +STR_WAYPOINT_NAME :{WAYPOINT} + +STR_JUST_CARGO :{CARGO_LONG} +STR_JUST_CHECKMARK :{CHECKMARK} +STR_JUST_COMMA :{COMMA} +STR_JUST_CURRENCY_SHORT :{CURRENCY_SHORT} +STR_JUST_CURRENCY_LONG :{CURRENCY_LONG} +STR_JUST_CARGO_LIST :{CARGO_LIST.dat} +STR_JUST_INT :{NUM} +STR_JUST_DATE_TINY :{DATE_TINY} +STR_JUST_DATE_SHORT :{DATE_SHORT} +STR_JUST_DATE_LONG :{DATE_LONG} +STR_JUST_DATE_ISO :{DATE_ISO} +STR_JUST_STRING :{STRING} +STR_JUST_STRING_STRING :{STRING}{STRING} +STR_JUST_RAW_STRING :{STRING} +STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} + +# Slightly 'raw' stringcodes with colour or size +STR_BLACK_COMMA :{BLACK}{COMMA} +STR_TINY_BLACK_COMA :{TINY_FONT}{BLACK}{COMMA} +STR_TINY_COMMA :{TINY_FONT}{COMMA} +STR_BLUE_COMMA :{BLUE}{COMMA} +STR_RED_COMMA :{RED}{COMMA} +STR_WHITE_COMMA :{WHITE}{COMMA} +STR_TINY_BLACK_DECIMAL :{TINY_FONT}{BLACK}{DECIMAL} +STR_COMPANY_MONEY :{WHITE}{CURRENCY_LONG} +STR_BLACK_DATE_LONG :{BLACK}{DATE_LONG} +STR_WHITE_DATE_LONG :{WHITE}{DATE_LONG} +STR_SHORT_DATE :{WHITE}{DATE_TINY} +STR_DATE_LONG_SMALL :{TINY_FONT}{BLACK}{DATE_LONG} +STR_TINY_GROUP :{TINY_FONT}{GROUP} +STR_BLACK_INT :{BLACK}{NUM} +STR_ORANGE_INT :{ORANGE}{NUM} +STR_WHITE_SIGN :{WHITE}{SIGN} +STR_TINY_BLACK_STATION :{TINY_FONT}{BLACK}{STATION} +STR_BLACK_STRING :{BLACK}{STRING} +STR_BLACK_RAW_STRING :{BLACK}{STRING} +STR_ORANGE_STRING :{ORANGE}{STRING} +STR_LTBLUE_STRING :{LTBLUE}{STRING} +STR_WHITE_STRING :{WHITE}{STRING} +STR_ORANGE_STRING1_WHITE :{ORANGE}{STRING}{WHITE} +STR_ORANGE_STRING1_LTBLUE :{ORANGE}{STRING}{LTBLUE} +STR_TINY_BLACK_HEIGHT :{TINY_FONT}{BLACK}{HEIGHT} +STR_TINY_BLACK_VEHICLE :{TINY_FONT}{BLACK}{VEHICLE} +STR_TINY_RIGHT_ARROW :{TINY_FONT}{RIGHT_ARROW} + +STR_BLACK_1 :{BLACK}1 +STR_BLACK_2 :{BLACK}2 +STR_BLACK_3 :{BLACK}3 +STR_BLACK_4 :{BLACK}4 +STR_BLACK_5 :{BLACK}5 +STR_BLACK_6 :{BLACK}6 +STR_BLACK_7 :{BLACK}7 + +STR_TRAIN :{BLACK}{TRAIN} +STR_BUS :{BLACK}{BUS} +STR_LORRY :{BLACK}{LORRY} +STR_PLANE :{BLACK}{PLANE} +STR_SHIP :{BLACK}{SHIP} + +STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) diff --git a/src/rev.cpp b/src/rev.cpp index d1f36f2c10..69e43bf610 100644 --- a/src/rev.cpp +++ b/src/rev.cpp @@ -39,7 +39,7 @@ bool IsReleasedVersion() * norev000 is for non-releases that are made on systems without * subversion or sources that are not a checkout of subversion. */ -const char _openttd_revision[] = "h08633bf1M-openttd"; +const char _openttd_revision[] = "1.5.0-rc1"; /** * The text version of OpenTTD's build date. @@ -72,11 +72,11 @@ const byte _openttd_revision_modified = 2; * final release will always have a lower version number than the released * version, thus making comparisons on specific revisions easy. */ -const uint32 _openttd_newgrf_version = 1 << 28 | 5 << 24 | 0 << 20 | 0 << 19 | (0 & ((1 << 19) - 1)); +const uint32 _openttd_newgrf_version = 1 << 28 | 5 << 24 | 0 << 20 | 0 << 19 | (27196 & ((1 << 19) - 1)); #ifdef __MORPHOS__ /** * Variable used by MorphOS to show the version. */ -extern const char morphos_versions_tag[] = "$VER: OpenTTD h08633bf1M-openttd (16.03.15) OpenTTD Team [MorphOS, PowerPC]"; +extern const char morphos_versions_tag[] = "$VER: OpenTTD h9213ee54M-openttd (19.03.15) OpenTTD Team [MorphOS, PowerPC]"; #endif diff --git a/src/safeguards.h b/src/safeguards.h new file mode 100644 index 0000000000..04228d25a4 --- /dev/null +++ b/src/safeguards.h @@ -0,0 +1,74 @@ +/* $Id: safeguards.h 26651 2014-06-17 19:01:45Z rubidium $ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** + * @file safeguards.h A number of safeguards to prevent using unsafe methods. + * + * Unsafe methods are, for example, strndup and strncpy because they may leave the + * string without a null termination, but also strdup and strndup because they can + * return NULL and then all strdups would need to be guarded against that instead + * of using the current MallocT/ReallocT/CallocT technique of just giving the user + * an error that too much memory was used instead of spreading that code though + * the whole code base. + */ + +#ifndef SAFEGUARDS_H +#define SAFEGUARDS_H + +/* Use MallocT instead. */ +#define malloc SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use MallocT instead. */ +#define calloc SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use ReallocT instead. */ +#define realloc SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use stredup instead. */ +#define strdup SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define strndup SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use strecpy instead. */ +#define strcpy SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define strncpy SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use strecat instead. */ +#define strcat SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define strncat SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use seprintf instead. */ +#define sprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define snprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use vseprintf instead. */ +#define vsprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD +#define vsnprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use fgets instead. */ +#define gets SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* No clear replacement. */ +#define strtok SAFEGUARD_DO_NOT_USE_THIS_METHOD + +/* Use our own templated implementation instead of a macro or function with only one type. */ +#ifdef min +#undef min +#endif + +/* Use our own templated implementation instead of a macro or function with only one type. */ +#ifdef max +#undef max +#endif + +/* Use our own templated implementation instead of a macro or function with only one type. */ +#ifdef abs +#undef abs +#endif + +#endif /* SAFEGUARDS_H */ diff --git a/src/table/heightmap_colours.h b/src/table/heightmap_colours.h new file mode 100644 index 0000000000..db320080ce --- /dev/null +++ b/src/table/heightmap_colours.h @@ -0,0 +1,344 @@ +/* $Id: heightmap_colours.h 26930 2014-09-27 14:51:34Z rubidium $ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** + * @file heightmap_colours.h The colour tables for heightmaps. + */ + +/** Height map colours for the green colour scheme, ordered by height. */ +static const uint32 _green_map_heights[] = { + MKCOLOUR(0x59595958), + MKCOLOUR(0x59595958), + MKCOLOUR(0x59595959), + MKCOLOUR(0x5959595A), + MKCOLOUR(0x59595A59), + MKCOLOUR(0x59595A5A), + MKCOLOUR(0x595A5959), + MKCOLOUR(0x595A595A), + MKCOLOUR(0x595A5A59), + MKCOLOUR(0x595A5A5A), + MKCOLOUR(0x5A595959), + MKCOLOUR(0x5A59595A), + MKCOLOUR(0x5A595A59), + MKCOLOUR(0x5A595A5A), + MKCOLOUR(0x5A5A5959), + MKCOLOUR(0x5A5A595A), + MKCOLOUR(0x5A5A5A59), + MKCOLOUR(0x5A5A5A5A), + MKCOLOUR(0x5A5A5A5B), + MKCOLOUR(0x5A5A5B5A), + MKCOLOUR(0x5A5A5B5B), + MKCOLOUR(0x5A5B5A5A), + MKCOLOUR(0x5A5B5A5B), + MKCOLOUR(0x5A5B5B5A), + MKCOLOUR(0x5A5B5B5B), + MKCOLOUR(0x5B5A5A5A), + MKCOLOUR(0x5B5A5A5B), + MKCOLOUR(0x5B5A5B5A), + MKCOLOUR(0x5B5A5B5B), + MKCOLOUR(0x5B5B5A5A), + MKCOLOUR(0x5B5B5A5B), + MKCOLOUR(0x5B5B5B5B), + MKCOLOUR(0x5B5B5B5C), + MKCOLOUR(0x5B5B5C5B), + MKCOLOUR(0x5B5B5C5C), + MKCOLOUR(0x5B5C5B5B), + MKCOLOUR(0x5B5C5B5C), + MKCOLOUR(0x5B5C5C5B), + MKCOLOUR(0x5B5C5C5C), + MKCOLOUR(0x5C5B5B5B), + MKCOLOUR(0x5C5B5B5C), + MKCOLOUR(0x5C5B5C5B), + MKCOLOUR(0x5C5B5C5C), + MKCOLOUR(0x5C5C5B5B), + MKCOLOUR(0x5C5C5B5C), + MKCOLOUR(0x5C5C5C5C), + MKCOLOUR(0x5C5C5C5D), + MKCOLOUR(0x5C5C5D5C), + MKCOLOUR(0x5C5C5D5D), + MKCOLOUR(0x5C5D5C5C), + MKCOLOUR(0x5C5D5C5D), + MKCOLOUR(0x5C5D5D5C), + MKCOLOUR(0x5C5D5D5D), + MKCOLOUR(0x5D5C5C5C), + MKCOLOUR(0x5D5C5C5D), + MKCOLOUR(0x5D5C5D5C), + MKCOLOUR(0x5D5C5D5D), + MKCOLOUR(0x5D5D5C5C), + MKCOLOUR(0x5D5D5C5D), + MKCOLOUR(0x5D5D5D5D), + MKCOLOUR(0x5D5D5D5E), + MKCOLOUR(0x5D5D5E5D), + MKCOLOUR(0x5D5D5E5E), + MKCOLOUR(0x5D5E5D5D), + MKCOLOUR(0x5D5E5D5E), + MKCOLOUR(0x5D5E5E5D), + MKCOLOUR(0x5D5E5E5E), + MKCOLOUR(0x5E5D5D5D), + MKCOLOUR(0x5E5D5D5E), + MKCOLOUR(0x5E5D5E5D), + MKCOLOUR(0x5E5D5E5E), + MKCOLOUR(0x5E5D5D5D), + MKCOLOUR(0x5E5D5D5E), + MKCOLOUR(0x5E5E5E5E), + MKCOLOUR(0x5E5E5E5F), + MKCOLOUR(0x5E5E5F5E), + MKCOLOUR(0x5E5E5F5F), + MKCOLOUR(0x5E5F5E5E), + MKCOLOUR(0x5E5F5E5F), + MKCOLOUR(0x5E5F5F5E), + MKCOLOUR(0x5E5F5F5F), + MKCOLOUR(0x5F5E5E5E), + MKCOLOUR(0x5F5E5E5F), + MKCOLOUR(0x5F5E5F5E), + MKCOLOUR(0x5F5E5F5F), + MKCOLOUR(0x5F5F5E5E), + MKCOLOUR(0x5F5F5E5F), + MKCOLOUR(0x5F5F5F5F), + MKCOLOUR(0x5F5F5F1F), + MKCOLOUR(0x5F5F1F5F), + MKCOLOUR(0x5F5F1F1F), + MKCOLOUR(0x5F1F5F1F), + MKCOLOUR(0x5F1F1F1F), + MKCOLOUR(0x1F5F5F5F), + MKCOLOUR(0x1F5F5F1F), + MKCOLOUR(0x1F5F1F5F), + MKCOLOUR(0x1F5F1F1F), + MKCOLOUR(0x1F1F5F5F), + MKCOLOUR(0x1F1F5F1F), + MKCOLOUR(0x1F1F1F5F), + MKCOLOUR(0x1F1F1F1F), + MKCOLOUR(0x1F1F1F27), + MKCOLOUR(0x1F1F271F), + MKCOLOUR(0x1F1F2727), + MKCOLOUR(0x1F271F1F), + MKCOLOUR(0x1F271F27), + MKCOLOUR(0x1F272727), + MKCOLOUR(0x271F1F1F), + MKCOLOUR(0x271F1F27), + MKCOLOUR(0x271F271F), + MKCOLOUR(0x271F2727), + MKCOLOUR(0x27271F1F), + MKCOLOUR(0x27271F27), + MKCOLOUR(0x2727271F), + MKCOLOUR(0x27272727), +}; + +/** Height map colours for the dark green colour scheme, ordered by height. */ +static const uint32 _dark_green_map_heights[] = { + MKCOLOUR(0x60606060), + MKCOLOUR(0x60606061), + MKCOLOUR(0x60606160), + MKCOLOUR(0x60606161), + MKCOLOUR(0x60616060), + MKCOLOUR(0x60616061), + MKCOLOUR(0x60616160), + MKCOLOUR(0x60616161), + MKCOLOUR(0x61606060), + MKCOLOUR(0x61606061), + MKCOLOUR(0x61606160), + MKCOLOUR(0x61606161), + MKCOLOUR(0x61616060), + MKCOLOUR(0x61616061), + MKCOLOUR(0x61616160), + MKCOLOUR(0x61616161), + MKCOLOUR(0x61616162), + MKCOLOUR(0x61616261), + MKCOLOUR(0x61616262), + MKCOLOUR(0x61626161), + MKCOLOUR(0x61626162), + MKCOLOUR(0x61626261), + MKCOLOUR(0x61626262), + MKCOLOUR(0x62616161), + MKCOLOUR(0x62616162), + MKCOLOUR(0x62616261), + MKCOLOUR(0x62616262), + MKCOLOUR(0x62626161), + MKCOLOUR(0x62626162), + MKCOLOUR(0x62626261), + MKCOLOUR(0x62626262), + MKCOLOUR(0x62626263), + MKCOLOUR(0x62626362), + MKCOLOUR(0x62626363), + MKCOLOUR(0x62636262), + MKCOLOUR(0x62636263), + MKCOLOUR(0x62636362), + MKCOLOUR(0x62636363), + MKCOLOUR(0x63626262), + MKCOLOUR(0x63626263), + MKCOLOUR(0x63626362), + MKCOLOUR(0x63626363), + MKCOLOUR(0x63636262), + MKCOLOUR(0x63636263), + MKCOLOUR(0x63636362), + MKCOLOUR(0x63636363), + MKCOLOUR(0x63636364), + MKCOLOUR(0x63636463), + MKCOLOUR(0x63636464), + MKCOLOUR(0x63646363), + MKCOLOUR(0x63646364), + MKCOLOUR(0x63646463), + MKCOLOUR(0x63646464), + MKCOLOUR(0x64636363), + MKCOLOUR(0x64636364), + MKCOLOUR(0x64636463), + MKCOLOUR(0x64636464), + MKCOLOUR(0x64646363), + MKCOLOUR(0x64646364), + MKCOLOUR(0x64646463), + MKCOLOUR(0x64646464), + MKCOLOUR(0x64646465), + MKCOLOUR(0x64646564), + MKCOLOUR(0x64646565), + MKCOLOUR(0x64656464), + MKCOLOUR(0x64656465), + MKCOLOUR(0x64656564), + MKCOLOUR(0x64656565), + MKCOLOUR(0x65646464), + MKCOLOUR(0x65646465), + MKCOLOUR(0x65646564), + MKCOLOUR(0x65646565), + MKCOLOUR(0x65656464), + MKCOLOUR(0x65656465), + MKCOLOUR(0x65656564), + MKCOLOUR(0x65656565), + MKCOLOUR(0x65656566), + MKCOLOUR(0x65656665), + MKCOLOUR(0x65656666), + MKCOLOUR(0x65666565), + MKCOLOUR(0x65666566), + MKCOLOUR(0x65666665), + MKCOLOUR(0x65666666), + MKCOLOUR(0x66656565), + MKCOLOUR(0x66656566), + MKCOLOUR(0x66656665), + MKCOLOUR(0x66656666), + MKCOLOUR(0x66666565), + MKCOLOUR(0x66666566), + MKCOLOUR(0x66666665), + MKCOLOUR(0x66666666), + MKCOLOUR(0x66666667), + MKCOLOUR(0x66666766), + MKCOLOUR(0x66666767), + MKCOLOUR(0x66676666), + MKCOLOUR(0x66676667), + MKCOLOUR(0x66676766), + MKCOLOUR(0x66676767), + MKCOLOUR(0x67676767), +}; + +/** Height map colours for the violet colour scheme, ordered by height. */ +static const uint32 _violet_map_heights[] = { + MKCOLOUR(0x80808080), + MKCOLOUR(0x80808081), + MKCOLOUR(0x80808180), + MKCOLOUR(0x80808181), + MKCOLOUR(0x80818080), + MKCOLOUR(0x80818081), + MKCOLOUR(0x80818180), + MKCOLOUR(0x80818181), + MKCOLOUR(0x81808080), + MKCOLOUR(0x81808081), + MKCOLOUR(0x81808180), + MKCOLOUR(0x81808181), + MKCOLOUR(0x81818080), + MKCOLOUR(0x81818081), + MKCOLOUR(0x81818180), + MKCOLOUR(0x81818181), + MKCOLOUR(0x81818182), + MKCOLOUR(0x81818281), + MKCOLOUR(0x81818282), + MKCOLOUR(0x81828181), + MKCOLOUR(0x81828182), + MKCOLOUR(0x81828281), + MKCOLOUR(0x81828282), + MKCOLOUR(0x82818181), + MKCOLOUR(0x82818182), + MKCOLOUR(0x82818281), + MKCOLOUR(0x82818282), + MKCOLOUR(0x82828181), + MKCOLOUR(0x82828182), + MKCOLOUR(0x82828281), + MKCOLOUR(0x82828282), + MKCOLOUR(0x82828283), + MKCOLOUR(0x82828382), + MKCOLOUR(0x82828383), + MKCOLOUR(0x82838282), + MKCOLOUR(0x82838283), + MKCOLOUR(0x82838382), + MKCOLOUR(0x82838383), + MKCOLOUR(0x83828282), + MKCOLOUR(0x83828283), + MKCOLOUR(0x83828382), + MKCOLOUR(0x83828383), + MKCOLOUR(0x83838282), + MKCOLOUR(0x83838283), + MKCOLOUR(0x83838382), + MKCOLOUR(0x83838383), + MKCOLOUR(0x83838384), + MKCOLOUR(0x83838483), + MKCOLOUR(0x83838484), + MKCOLOUR(0x83848383), + MKCOLOUR(0x83848384), + MKCOLOUR(0x83848483), + MKCOLOUR(0x83848484), + MKCOLOUR(0x84838383), + MKCOLOUR(0x84838384), + MKCOLOUR(0x84838483), + MKCOLOUR(0x84838484), + MKCOLOUR(0x84848383), + MKCOLOUR(0x84848384), + MKCOLOUR(0x84848483), + MKCOLOUR(0x84848484), + MKCOLOUR(0x84848485), + MKCOLOUR(0x84848584), + MKCOLOUR(0x84848585), + MKCOLOUR(0x84858484), + MKCOLOUR(0x84858485), + MKCOLOUR(0x84858584), + MKCOLOUR(0x84858585), + MKCOLOUR(0x85848484), + MKCOLOUR(0x85848485), + MKCOLOUR(0x85848584), + MKCOLOUR(0x85848585), + MKCOLOUR(0x85858484), + MKCOLOUR(0x85858485), + MKCOLOUR(0x85858584), + MKCOLOUR(0x85858585), + MKCOLOUR(0x85858586), + MKCOLOUR(0x85858685), + MKCOLOUR(0x85858686), + MKCOLOUR(0x85868585), + MKCOLOUR(0x85868586), + MKCOLOUR(0x85868685), + MKCOLOUR(0x85868686), + MKCOLOUR(0x85868585), + MKCOLOUR(0x85868586), + MKCOLOUR(0x85868685), + MKCOLOUR(0x85868686), + MKCOLOUR(0x86868585), + MKCOLOUR(0x86868586), + MKCOLOUR(0x86868685), + MKCOLOUR(0x86868686), + MKCOLOUR(0x86868687), + MKCOLOUR(0x86868786), + MKCOLOUR(0x86868787), + MKCOLOUR(0x86878686), + MKCOLOUR(0x86878687), + MKCOLOUR(0x86878786), + MKCOLOUR(0x86878787), + MKCOLOUR(0x87868686), + MKCOLOUR(0x87868687), + MKCOLOUR(0x87868786), + MKCOLOUR(0x87868787), + MKCOLOUR(0x87878686), + MKCOLOUR(0x87878687), + MKCOLOUR(0x87878786), + MKCOLOUR(0x87878787), +}; From e562033a2c3ba43ba855e4f1b061c20e240f4003 Mon Sep 17 00:00:00 2001 From: Pavel Stupnikov Date: Thu, 19 Mar 2015 17:14:17 +0300 Subject: [PATCH 4/4] proper rev.cpp for 1.5.0-rc1 --HG-- branch : openttd --- src/rev.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rev.cpp b/src/rev.cpp index 69e43bf610..a6b58188d8 100644 --- a/src/rev.cpp +++ b/src/rev.cpp @@ -39,7 +39,7 @@ bool IsReleasedVersion() * norev000 is for non-releases that are made on systems without * subversion or sources that are not a checkout of subversion. */ -const char _openttd_revision[] = "1.5.0-rc1"; +const char _openttd_revision[] = "1.5.0-RC1"; /** * The text version of OpenTTD's build date. @@ -57,7 +57,7 @@ const char _openttd_build_date[] = __DATE__ " " __TIME__; * (compiling from sources without any version control software) * and 2 is for modified revision. */ -const byte _openttd_revision_modified = 2; +const byte _openttd_revision_modified = 0; /** * The NewGRF revision of OTTD: @@ -78,5 +78,5 @@ const uint32 _openttd_newgrf_version = 1 << 28 | 5 << 24 | 0 << 20 | 0 << 19 | ( /** * Variable used by MorphOS to show the version. */ -extern const char morphos_versions_tag[] = "$VER: OpenTTD h9213ee54M-openttd (19.03.15) OpenTTD Team [MorphOS, PowerPC]"; +extern const char morphos_versions_tag[] = "$VER: OpenTTD 1.5.0-RC1 (19.03.15) OpenTTD Team [MorphOS, PowerPC]"; #endif