From 42ec3bd611fdad52ea2bce1aa5a0a8e36a1e771c Mon Sep 17 00:00:00 2001 From: Pavel Stupnikov Date: Fri, 6 Apr 2018 21:26:22 +0300 Subject: [PATCH] Update to 1.8.0 --HG-- branch : openttd --- bin/ai/regression/regression_info.nut | 4 +- bin/baseset/openttd.grf | Bin 498506 -> 501532 bytes bin/baseset/opntitle.dat | Bin 65416 -> 52564 bytes changelog.txt | 41 +++ config.lib | 32 ++- known-bugs.txt | 4 +- media/extra_grf/airports.nfo | 15 +- media/extra_grf/airports.png | Bin 6504 -> 9491 bytes media/extra_grf/chars.nfo | 2 +- media/extra_grf/openttdgui.png | Bin 26460 -> 26462 bytes os/debian/changelog | 12 + os/debian/copyright | 2 +- os/os2/installer/make_installer.cmd | 2 +- os/rpm/openttd.spec | 6 +- os/windows/installer/install.nsi | 4 +- projects/generate | 17 +- projects/generate.vbs | 17 +- projects/langs_vs140.vcxproj | 2 +- projects/langs_vs140.vcxproj.in | 2 +- projects/openttd_vs140.vcxproj | 6 +- projects/openttd_vs140.vcxproj.in | 6 +- readme.txt | 5 +- src/3rdparty/squirrel/squirrel/sqvm.cpp | 11 +- src/ai/ai_gui.cpp | 2 +- src/ai/ai_info.cpp | 5 +- src/ai/ai_scanner.cpp | 4 +- src/airport.cpp | 4 +- src/blitter/32bpp_anim.cpp | 2 +- src/blitter/32bpp_anim.hpp | 2 +- src/blitter/32bpp_anim_sse4.cpp | 2 +- src/blitter/8bpp_simple.cpp | 2 +- src/build_vehicle_gui.cpp | 18 +- src/company_cmd.cpp | 4 +- src/company_gui.cpp | 14 +- src/company_manager_face.h | 4 +- src/console.cpp | 4 +- src/console_cmds.cpp | 2 +- src/depot_gui.cpp | 64 ++++- src/economy.cpp | 17 +- src/elrail.cpp | 3 +- src/engine.cpp | 23 +- src/engine_base.h | 3 +- src/engine_gui.cpp | 15 +- src/fileio.cpp | 49 +--- src/fios.cpp | 7 +- src/fios_gui.cpp | 5 +- src/fontcache.cpp | 10 +- src/game/game_info.cpp | 5 +- src/game/game_scanner.cpp | 4 +- src/gfx_func.h | 14 +- src/group_gui.cpp | 49 +++- src/hotkeys.cpp | 4 +- src/industry.h | 3 +- src/industry_cmd.cpp | 2 +- src/industry_gui.cpp | 37 +-- src/lang/afrikaans.txt | 15 +- src/lang/arabic_egypt.txt | 8 +- src/lang/basque.txt | 15 +- src/lang/belarusian.txt | 15 +- src/lang/brazilian_portuguese.txt | 36 ++- src/lang/bulgarian.txt | 15 +- src/lang/catalan.txt | 36 ++- src/lang/croatian.txt | 36 ++- src/lang/czech.txt | 36 ++- src/lang/danish.txt | 40 ++- src/lang/dutch.txt | 36 ++- src/lang/english.txt | 36 ++- src/lang/english_AU.txt | 15 +- src/lang/english_US.txt | 36 ++- src/lang/esperanto.txt | 8 +- src/lang/estonian.txt | 15 +- src/lang/faroese.txt | 15 +- src/lang/finnish.txt | 33 ++- src/lang/french.txt | 36 ++- src/lang/gaelic.txt | 36 ++- src/lang/galician.txt | 36 ++- src/lang/german.txt | 36 ++- src/lang/greek.txt | 34 ++- src/lang/hebrew.txt | 36 ++- src/lang/hungarian.txt | 34 ++- src/lang/icelandic.txt | 15 +- src/lang/indonesian.txt | 15 +- src/lang/irish.txt | 15 +- src/lang/italian.txt | 36 ++- src/lang/japanese.txt | 18 +- src/lang/korean.txt | 38 ++- src/lang/latin.txt | 34 ++- src/lang/latvian.txt | 15 +- src/lang/lithuanian.txt | 15 +- src/lang/luxembourgish.txt | 36 ++- src/lang/malay.txt | 13 +- src/lang/norwegian_bokmal.txt | 40 +-- src/lang/norwegian_nynorsk.txt | 15 +- src/lang/polish.txt | 36 ++- src/lang/portuguese.txt | 93 ++++--- src/lang/romanian.txt | 15 +- src/lang/russian.txt | 34 ++- src/lang/serbian.txt | 15 +- src/lang/simplified_chinese.txt | 24 +- src/lang/slovak.txt | 15 +- src/lang/slovenian.txt | 17 +- src/lang/spanish.txt | 36 ++- src/lang/spanish_MX.txt | 346 ++++++++++++------------ src/lang/swedish.txt | 36 ++- src/lang/tamil.txt | 15 +- src/lang/thai.txt | 15 +- src/lang/traditional_chinese.txt | 15 +- src/lang/turkish.txt | 36 ++- src/lang/ukrainian.txt | 15 +- src/lang/unfinished/chuvash.txt | 3 +- src/lang/unfinished/frisian.txt | 12 +- src/lang/unfinished/ido.txt | 5 +- src/lang/unfinished/macedonian.txt | 8 +- src/lang/unfinished/maltese.txt | 3 +- src/lang/unfinished/marathi.txt | 3 +- src/lang/unfinished/persian.txt | 8 +- src/lang/unfinished/urdu.txt | 6 +- src/lang/vietnamese.txt | 36 ++- src/lang/welsh.txt | 15 +- src/linkgraph/linkgraph_gui.h | 3 +- src/misc_gui.cpp | 14 +- src/music/extmidi.cpp | 40 ++- src/music/extmidi.h | 4 +- src/music/qtmidi.cpp | 10 +- src/network/core/udp.cpp | 11 +- src/network/network_chat_gui.cpp | 13 +- src/network/network_client.cpp | 5 +- src/network/network_content_gui.cpp | 5 +- src/network/network_gui.cpp | 7 +- src/network/network_server.cpp | 7 +- src/newgrf.cpp | 79 +++++- src/newgrf_airport.cpp | 31 +-- src/newgrf_airport.h | 6 +- src/newgrf_airporttiles.cpp | 17 +- src/newgrf_airporttiles.h | 16 +- src/newgrf_canal.cpp | 12 +- src/newgrf_engine.cpp | 41 +-- src/newgrf_engine.h | 15 +- src/newgrf_generic.cpp | 31 +-- src/newgrf_gui.cpp | 14 +- src/newgrf_house.cpp | 39 +-- src/newgrf_house.h | 19 +- src/newgrf_industries.cpp | 29 +- src/newgrf_industries.h | 22 +- src/newgrf_industrytiles.cpp | 27 +- src/newgrf_industrytiles.h | 14 +- src/newgrf_object.cpp | 19 +- src/newgrf_object.h | 19 +- src/newgrf_railtype.cpp | 14 +- src/newgrf_railtype.h | 13 +- src/newgrf_spritegroup.cpp | 89 ++---- src/newgrf_spritegroup.h | 44 ++- src/newgrf_station.cpp | 36 +-- src/newgrf_station.h | 17 +- src/newgrf_text.cpp | 2 +- src/newgrf_text.h | 2 +- src/newgrf_town.cpp | 14 +- src/newgrf_town.h | 13 +- src/news_gui.cpp | 2 +- src/order_cmd.cpp | 11 +- src/order_gui.cpp | 4 +- src/os/windows/ottdres.rc.in | 8 +- src/pathfinder/npf/npf.cpp | 20 +- src/pathfinder/yapf/yapf_costrail.hpp | 5 +- src/pathfinder/yapf/yapf_destrail.hpp | 5 +- src/pathfinder/yapf/yapf_rail.cpp | 37 +-- src/pathfinder/yapf/yapf_type.hpp | 2 +- src/rail.cpp | 4 +- src/rail_cmd.cpp | 61 +++-- src/rev.cpp | 10 +- src/rev.cpp.in | 4 +- src/roadveh_cmd.cpp | 20 +- src/saveload/afterload.cpp | 4 +- src/saveload/company_sl.cpp | 4 +- src/saveload/industry_sl.cpp | 4 +- src/saveload/saveload.cpp | 5 +- src/saveload/vehicle_sl.cpp | 6 +- src/script/api/ai_changelog.hpp | 6 +- src/script/api/game_changelog.hpp | 6 +- src/script/api/script_error.cpp | 5 +- src/settings.cpp | 7 +- src/settings_gui.cpp | 3 +- src/settings_type.h | 3 +- src/ship_cmd.cpp | 38 +-- src/signal.cpp | 8 +- src/signs_gui.cpp | 4 +- src/smallmap_gui.cpp | 12 +- src/smallmap_gui.h | 2 +- src/spritecache.cpp | 4 +- src/station_cmd.cpp | 57 ++-- src/station_gui.cpp | 4 +- src/stdafx.h | 23 +- src/table/airport_defaults.h | 42 +-- src/table/elrail_data.h | 14 +- src/table/settings.ini | 12 +- src/terraform_gui.cpp | 8 +- src/tile_type.h | 4 +- src/timetable_gui.cpp | 5 +- src/town_cmd.cpp | 8 +- src/town_gui.cpp | 5 +- src/track_func.h | 4 +- src/track_type.h | 32 +-- src/train.h | 4 +- src/train_cmd.cpp | 19 +- src/train_gui.cpp | 2 +- src/tree_cmd.cpp | 7 +- src/vehicle.cpp | 52 +++- src/vehicle_base.h | 3 +- src/vehicle_gui.cpp | 24 +- src/vehiclelist.cpp | 4 +- src/video/cocoa/event.mm | 4 +- src/video/win32_v.cpp | 4 +- src/viewport.cpp | 10 +- src/viewport_sprite_sorter.h | 4 +- src/water_cmd.cpp | 10 +- src/waypoint_cmd.cpp | 2 +- src/widget.cpp | 23 +- src/widget_type.h | 6 +- src/widgets/dropdown.cpp | 2 +- src/widgets/group_widget.h | 3 +- src/window.cpp | 151 +++++++---- 221 files changed, 2325 insertions(+), 1788 deletions(-) diff --git a/bin/ai/regression/regression_info.nut b/bin/ai/regression/regression_info.nut index 49cc4478b3..d964660f14 100644 --- a/bin/ai/regression/regression_info.nut +++ b/bin/ai/regression/regression_info.nut @@ -1,4 +1,4 @@ -/* $Id: regression_info.nut 27518 2016-03-01 20:00:22Z frosch $ */ +/* $Id: regression_info.nut 27780 2017-03-11 20:50:26Z frosch $ */ class Regression extends AIInfo { function GetAuthor() { return "OpenTTD NoAI Developers Team"; } @@ -6,7 +6,7 @@ class Regression extends AIInfo { function GetShortName() { return "REGR"; } function GetDescription() { return "This runs regression-tests on some commands. On the same map the result should always be the same."; } function GetVersion() { return 1; } - function GetAPIVersion() { return "1.7"; } + function GetAPIVersion() { return "1.8"; } function GetDate() { return "2007-03-18"; } function CreateInstance() { return "Regression"; } } diff --git a/bin/baseset/openttd.grf b/bin/baseset/openttd.grf index 85d3fc8adc6f90cb9912c0ea79d0dbee280581a5..5d124f3f8fa8ba03d57e1d67a8abe553fef879ec 100644 GIT binary patch delta 3590 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%0DZG{Zu| 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 hYFDj|VPL%Vk9p?| diff --git a/changelog.txt b/changelog.txt index 8edba15fb4..5e1540a1e0 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,44 @@ +1.8.0 (2018-04-01) +------------------------------------------------------------------------ +(None) + + +1.8.0-RC1 (2018-03-21) +------------------------------------------------------------------------ +- Feature: [GFX] Climate-specific Action5 extra airport sprites [FS#6664] (r27976) +- Feature: Draw vertical separators at tile distance in the train depot GUI (r27938, r27899) +- Feature: [Build] MSVC 2017 project file generator. Most noticeable, std:c++latest is enabled (r27920, r27919, r27918, r27917) +- Feature: [Build] Project file generator for kdevelop 4/5 [FS#6577] (r27897) +- Feature: Add option to close windows with right click [FS#4950] (r27826, r27825) +- Feature: Vehicle Group Info: Add profits and occupancy display to group vehicle list (r27822) +- Feature: Display aircraft type in vehicle preview/purchase/detail windows (r27802, r27799, r27797) +- Change: [NewGRF] Various performance improvements to resolving VA2 (r27989, r27985, r27984, r27983, r27982) +- Change: [NewGRF] Increase maximum allowed vehicle sprite size to reduce clipping of ships (r27987) +- Change: Check companies for bankruptcy before subtracting reoccuring monthly costs [FS#6679] (r27981) +- Change: [GFX] Replace the office building sprite on various toyland airports with a better fitting sprite [FS#6664] (r27977) +- Change: [GFX] The switch-toolbar icon contained pixels from the fire cycle. Replace the whole icon with a new version [FS#6654] (r27961) +- Change: Reword texts in industry view, when stockpiling is used (r27952) +- Change: Remove the gap between windows when positioning them after opening [FS#6568] (r27934, r27900) +- Change: [Build] Enable usage of static_assert for MSVC (r27916) +- Change: [Build] Preserve PKG_CONFIG_PATH and PKG_CONFIG_LIBDIR environment variables in config.cache file [FS#6614] (r27902) +- Change: Do not cancel headquarter construction and engine-preview-query when shift-clicking (r27889) +- Change: Parse extmidi command string for parameters to pass on (r27834) +- Change: Draw images in centre of buttons (r27829, r27821) +- Fix: Store the map variety setting in the savegame like the other mapgen settings, so restarting maps considers it [FS#6673] (r27978) +- Fix: Hair selection was missing one option [FS#6642] (r27975) +- Fix: Avoid tile operations outside map border when building lock [FS#6662] (r27973) +- Fix: Catenary sprites got mixed up for depots [FS#6670] (r27972) +- Fix: Make automatic window-positioning RTL-aware (r27934, r27900) +- Fix: Automatic window-positioning now uses GUI-scale/style dependent sizes/distances instead of fixed pixel values (r27934, r27900) +- Fix: [NewGRF] While executing random triggers, var 5F should include the new triggers (r27928) +- Fix: [NewGRF] Reset used random triggers only after all A123 chains have been resolved, so that all RA2 in all chains can test the shared triggers (r27928) +- Fix: [NewGRF] Industry random triggers are stored per tile, even when randomising the shared random bits of the parent industry (r27928) +- Fix: [NPF] Reserved track bits were not accounted for when trying to find any safe position (r27912) +- Fix: Do not modify argv[0] [FS#6575] (r27886) +- Fix: Do not search directories when opening ini files as we already have their full path [FS#6421] (r27816) +- Fix: Road tunnel/bridge heads have no trackbits wrt. catenary drawing (r27812) + + 1.7.2 (2017-12-24) ------------------------------------------------------------------------ (None) diff --git a/config.lib b/config.lib index acfbc80767..0a9a5ef5be 100644 --- a/config.lib +++ b/config.lib @@ -1,4 +1,4 @@ -# $Id: config.lib 27949 2017-12-24 12:09:20Z frosch $ +# $Id: config.lib 28002 2018-04-01 11:14:34Z frosch $ # 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. @@ -172,7 +172,7 @@ set_default() { with_grfcodec with_nforenum with_sse - CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD" + CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD PKG_CONFIG_PATH PKG_CONFIG_LIBDIR" } detect_params() { @@ -473,6 +473,8 @@ detect_params() { CFLAGS_BUILD=* | --CFLAGS_BUILD=* | --CFLAGS-BUILD=*) CFLAGS_BUILD="$optarg";; CXXFLAGS_BUILD=* | --CXXFLAGS_BUILD=* | --CXXFLAGS-BUILD=*) CXXFLAGS_BUILD="$optarg";; LDFLAGS_BUILD=* | --LDFLAGS_BUILD=* | --LDFLAGS-BUILD=*) LDFLAGS_BUILD="$optarg";; + PKG_CONFIG_PATH=* | --PKG_CONFIG_PATH=* | --PKG-CONFIG-PATH=*) PKG_CONFIG_PATH="$optarg";; + PKG_CONFIG_LIBDIR=* | --PKG_CONFIG_LIBDIR=* | --PKG-CONFIG-LIBDIR=*) PKG_CONFIG_LIBDIR="$optarg";; --ignore-extra-parameters) ignore_extra_parameters="1";; @@ -517,6 +519,20 @@ save_params() { echo "" >> $config_log } +# Export a variable so tools like pkg-config can see it when invoked. +# If the variable contains an empty string then unset it. +# $1 - name of the variable to export or unset +export_or_unset() { + eval local value=\$$1 + if [ -n "$value" ]; then + export $1; + log 2 "using $1=$value"; + else + unset $1; + log 2 "not using $1"; + fi +} + check_params() { # Some params want to be in full uppercase, else they might not work as # expected.. fix that here @@ -525,6 +541,16 @@ check_params() { os=`echo $os | tr '[a-z]' '[A-Z]'` cpu_type=`echo $cpu_type | tr '[a-z]' '[A-Z]'` + # Export some variables to be used by pkg-config + # + # PKG_CONFIG_LIBDIR variable musn't be set if we are not willing to + # override the default pkg-config search path, it musn't be an empty + # string. If the variable is empty (e.g. when an empty string comes + # from config.cache) then unset it. This way the "don't override" state + # will be properly preserved when (re)configuring. + export_or_unset PKG_CONFIG_PATH + export_or_unset PKG_CONFIG_LIBDIR + # Check if all params have valid values # Endian only allows AUTO, LE and, BE @@ -3562,6 +3588,8 @@ showhelp() { echo " CFLAGS_BUILD C compiler flags for build time tool generation" echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation" echo " LDFLAGS_BUILD linker flags for build time tool generation" + echo " PKG_CONFIG_PATH additional library search paths (see \"man pkg-config\")" + echo " PKG_CONFIG_LIBDIR replace the default library search path (see \"man pkg-config\")" echo "" echo "Use these variables to override the choices made by 'configure' or to help" echo "it to find libraries and programs with nonstandard names/locations." diff --git a/known-bugs.txt b/known-bugs.txt index 440176a844..f324b1dcb6 100644 --- a/known-bugs.txt +++ b/known-bugs.txt @@ -1,6 +1,6 @@ OpenTTD's known bugs -Last updated: 2017-12-24 -Release version: 1.7.2 +Last updated: 2018-04-01 +Release version: 1.8.0 ------------------------------------------------------------------------ diff --git a/media/extra_grf/airports.nfo b/media/extra_grf/airports.nfo index b03f6306f4..6471407c32 100644 --- a/media/extra_grf/airports.nfo +++ b/media/extra_grf/airports.nfo @@ -1,5 +1,5 @@ // -// $Id: airports.nfo 23982 2012-02-24 22:29:44Z rubidium $ +// $Id: airports.nfo 27976 2018-03-11 11:43:32Z frosch $ // // 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. @@ -23,3 +23,16 @@ -1 sprites/airports.png 8bpp 82 88 64 31 -31 0 normal -1 sprites/airports.png 8bpp 162 88 64 31 -31 0 normal -1 sprites/airports.png 8bpp 242 88 64 31 -31 0 normal + -1 * 0 0C "Climate specific sprites by PaulC" + -1 * 0 07 83 01 \7! 01 03 + -1 * 0 05 90 02 0D + -1 sprites/airports.png 8bpp 320 88 64 31 -31 0 normal + -1 sprites/airports.png 8bpp 400 88 64 31 -31 0 normal + -1 * 0 07 83 01 \7! 02 03 + -1 * 0 05 90 02 0D + -1 sprites/airports.png 8bpp 480 88 64 31 -31 0 normal + -1 sprites/airports.png 8bpp 560 88 64 31 -31 0 normal + -1 * 0 07 83 01 \7! 03 03 + -1 * 0 05 90 02 0D + -1 sprites/airports.png 8bpp 640 88 64 31 -31 0 normal + -1 sprites/airports.png 8bpp 720 88 64 31 -31 0 normal diff --git a/media/extra_grf/airports.png b/media/extra_grf/airports.png index fd63355b1f5f428cf951228e1d5012b0bf552ece..5fb9618bc5bf8113df7bfb7e0739c3864e441d7f 100644 GIT binary patch delta 8753 zcmaE1G}&u{IM)XbW(Ed^^A#UnY*dtHu4iCO@^*J&=wOxgU|?Y2EbxddW?+Rf|MYlaRwRz^Wx_&z{XPZ*W zr0@mtN%x#${90I6o!`4?vGSF-acS>PC|>PPTU$3{-n{DhXVx%rHr$AuB9ZiO)7qo; zDT^Ggh0m-HWqehWyfLEn)ssIfHvdn4Beb^o#>a03`*tz!%lTchf8W%PR#yDCPX0dW zxL@&B^@GOw`Ogo;?^!ir*YDueJ$~-b9pf1$&{gy%#38eYv(TW;I;UVdC?cw-1@j@f#+{?+0$SDEI9X(Y5gC; zs`Kj=70gZ*>cr-6NS(Qi@%_ei6^F`Ncn$ft)$-Nd_~y7(pX1ME`@C@P>qb7=;SPCu zvzU`+wmsDg-(Fuo=a*vu^Mu*6-5TDM)b%oK%sIWWl{vp4Qhbg4d6R|4(mxDkUUj&C zNb>OgX!cgRzx0T(1N)ziveDJQZyo=fdpP3mJUwwofh(_^Qa?WHKB~kso6)J_z(MiT zmv2u^yis@b;~@b)qxHNe`kr5B5RmvO^QO^&<)rbf3Y^(C!L7gcm0 zJ=^=i<|504wQmgLotneyEEOuI%$|L8k<^5{=hv$#xUlWpD#Y6^KO; z*d-0+{ROLK`DZ^@dECph_wDO{7wD%I1aT zYm^_cmpT4aUvIWvx_^=7>xzh3(z}nG-je^l;>7v|;R4SsS;9P|Zarsxe{Vm(OZT^j zAF8+xXCDqU)4zAt^xQoUmsdHc1P!)=Myyth>sERU!yN=_6%l6C9%`TDlB+Z6`0xQbqC%~O3`TDmp=d46%G zA2zd8xxeJ`#dYiJKUTOlys+Hwp;Q@uJf6CR>C%7<7 zbbGEnZM8zgHi^{DA2+Pld-mCKO88daD%WojYzMP6wS0b^<&`OEbg#ev{AVabl6Bu^ zKl!3I@s$DgVnsn}k6lkaI{E6% zf3USf-SD8l<-KKAa(i5UD6M>S%F*S4w$qYtKdnw*Ei&bAdbapYnT?Fcg7w$TUWVRO z=6H5t$I{@`OV5jKit5-dmewt8s1G>4;F1IHvh41>)l~-%PEs^}87<|1;?L%HMuje3 z3RenQ>in)sI~SF}n56;-E8J3TUf5qq zO_=ia@1ekJ--~w##O>*2UTOBSrTx8l8vl#q-i$krv`m>MzOHZ6ynZavda9%wEp0`E~S#0X-AeNC@Vkw`+dK2`tgb^r|wA{$7a9iOpp38 z-+Jr$h4oKnZp)2dwqw)7>?x;|B+hHRy>KH^tjX=>vaMAYb;4{X$Gx@HsP15ON)Dg- zWl^L~?elPs4k_!$OwPU!jvMb;wWTP8Rmr#^cvk%-)r{9t&PNundQ-D1A-MlQRMlRQ zD@Jm)+cIZ`U3<2;v#lZ`{$wf7#Q)!}bfn+>`PMk=_-V~`4B|hGUb^-?`n*-_f~$DZ zl&{mY&udGi{+$!Jt-xVz;-%1UAG$ZSKVLg--WfUW7yGzZUs)o)t~tYIKa<0?NGDan zTk;#{Jq%S|6;)p|;q(4Ym$W<&TKKCvKS)<>KluHU(=(mO(!_(-iFWBFM0CRsc(~A@1}Xvtxr9B zmzcGG(!4vxQ>WY7^lxg{-^^}O_-;$I=k1_RnOJDko-kRK= zv0}@a8sYS$%p~s9aq6lw^;_J}FPHT?RP?6eRfJm^%e70lKOTBjp~N=bY<_}b^2KTT zi&K9;TG+5{^NC+VYbO2WdaJFuPGEZZduIQRPZb~Lf4j3RFzm?Is*@V8D_81;Sak*@ zUE<_FuYFeTQZ>gZxeG40%4X$XI$i%Q>7~tn8HWdVgG|fMsc((*=(!NTP>lPL*J+c@ z9}Awfx0$@)&aU=i-LXLN=D|{?U;B?-F*MZJv;Ut|)Y?ZYqb?L)ImBUh=1_rK`Syye z4GY?DNd)Z4_^s8Y{loG>pdA0MSJSN@@VZB~yG5=~nex?q@tWXtsax6xFVCq}|4_Yo zxPI}QhXLOzq^NtNs<#Dr~E}b8pwNooFb0({@*fqh! zihR?z?bW-NV>xG)q+F8HKX2!)4N-{#n?%=nR&qBq*O&>+xXxy}TjfQmU-rwu~9MHS+ zW0uVUXWPH`v`@<^)z7wFG52i$@~?lm(l>74U(>CAEAe@bQS0V=I_Zy>EvhKd@jj^L zyY|5iH*L8TtCZR{P0e{Mq0$j5y-zqzsz z;_s@~r@9^mnl373-yPZtlZg5I*TC%DAbsOHDWJxW1zP ztZ>%c1}3wP_J=yXANlsyN}NBbx$fHZ*C9u_onJYf3=Dgqp)IsHXHUE4<=UR(Weqk` zk}g5j>r%c6%&>J)tCmPBySXuH_uToCW_QkJum3*v2Iq6Z&5GOZ^{tBJyBrW*mT9r| zdho7@%7poyYwO-tY%;qp{{F&k^~aVkA9uX{UHrZ=q+8@v?TJ0d-+$AK%j6wC$2VQie(SqF{lMpA zk)f-Wo1bP>GLx5CAGYVpnb64<4>)(N;#PH!)VDtM>vo02dAHe-Iu*CflG6E-*PW?J*u2?2lWVZUOXko+&hjz)NmlN;wH?nN&XMecmnDv)$ z7niITk3SV{Kd->{h12KCqZ+U8K7VwPZ9HQ$rp2=yPz>?wco_Had!*v`cIJr};&_@8;ciaYn} zt93E8?~ct??{&9!2LV}m$Q+arLl8v ztf}6zTiboly9Cv=lVx4*;lIHKXUppItY4oh-eg!+J*D*Nt74mdb}1h+xILIAwwLlP zeDm;GO8?WKM}@U_k1e@gZ?S*(m!GP9ncG=f*0~2*S6zNBm;3&;i>un*yUx#4`o0@| zyl~`{UW@ayYZ|XFY3!DZmp881!k*H5;;~hGz_)_!n~n>qe9Xwcq<#LqUS-`%=eD(s zjXF-QTjum-7AJ4q6D9Rs;_3Bsx{n=Kt~b56aQpf~o6IERSdGoUYWA-?JKw0j;tf-W z)051%uJ7jFd9(50;=P{h>+4oJZ!><`Df_p?S>5~g-u#Wz{=HtmaIwBz+vd5CGvhy3 zZ0yvPOx-R0`q!L;$>t6m6QB3SzMq!TAM0Cn^5@;uv~_0fIoX#cM=tqu?X>TEzr0I* z5w#zm@LdDzl@_ipUc4(H?bz{qvvyvpXZJ{RJALj<%*uUQ`m63P0| zlh0M%_L>!Owe?C*zi|I1)rvQK9$XVGsx7jfd3_CyRonaE&$~&+;WM3Y@tl~botu;@ z-lgs;E0el#z1ZW0%oA9Ymi68|?CJL=DgJ8urS9|VA52hWE_!lm){Pz9C!=KDBR8|~ z+cwm%5j1@KMv(tOrcKF=FMmF3TcpTNK3Da)A!p`|*;D40<}7F7k8RL!DF`xoIXVAZ z;-&59*MFE$>SOh~w|at%@a#DsITtdEK3>Q#;B;i;;VUMW=J{0p`s2laQf;np)x6HT zB?~VU_o{79ddtY@5~J_K_u#kj%afnAZB=HMn7#a|W>znk-_E;yYdPbR%Rf!dJnN~Q z`Q_}-sdAHSIc9%R64u^dmFaMa`G=ivRZX30d&=ZawK^~bX_FTK7KIkA+dA*Xzyv+>K_a_d_?*O%wVT`Odm^umcf<5H>2`h}kB ztINx;ZDiQ=&WSz!QmO3vM$h&Ce>+ATXYP3A#GZDkRBrt;&-_o)%OZ}mocOlnMfU8H zyT?~2UYh;4&*@qrz}74QIobzpdixJ3ZH1$T1&kNZEa1 z^~^7|a_bK)376|wc8FMGbmxa^!bS-Jv2Mmh>{LBS64dSG;Q;r3QK@{+34Lin zRwXwdJ05>LvGMAH&$Yq-Gq`SEoIU%S(E7s-8{!O`YhKHg?cqxoxVCy)#IM>Q_w3(R zbDSc4Usd? zg|FBTHZoo^?0s3WM*Cicjp3O-JBJ0O&G+16*Z#io+B_$=_gk#%^j(i)-6sC~=Bsw= z-rbiam-f_Nm7Vp0qbXsd&E8nawzu*U3iWqC7iubfeat9#u`*m=;qK?n zmoLsRl6xzaZ!+(Yfbd*tD@Ma}haB_6Cb_=a_AWX90zdm^W9QGS%MEvTrKv_P$=h?9 zP?}pUF{8SYzWCrcG0ApPi2WamrrC!RK;E-3*tDO9UoXeLU83 z{Dr&6p=BVCKJ@<^dE>pfV$k|h`Ra!ZNiNN8Ygd1M73;(`)77=(N_TnZ1V^=9m+srW zxO(}e=!Wgydsa(cVw7A``TNwY8MAGlt-frZce?K4@6+|uBR&YZU91QR$hg|sUg08< zvS|O2SKrwaZ@d;wnP|1v+2)YJoUd%ZH8!Rhd~4>~k8HHn! z`^^taac?@I!$0xWwR%N4`3AlpFXHD(R=H2`i#OmI&pO;VGFeyo$u<4EA{#ezb6RW337#R30=x-KobWD<-xT+$7$&lGm zsbA^G>fJ}0F0Hul>~iRi)9O{F31@##u>J6!=ikNnLou!_?6s#HmuSg7sAnv=VEhZ?{^hTY4~@oC#>@Ifmz9=rZadITEA5N=lD9^AVU6bkbM7(`KQ%B zUYIr6a=C~|?AdPtNk?PnbS+scxpq~3dHJNeee;A?YgMxxtl1i)JGZQXrT%yHf~`kp zCDocT_4igX{9p36D$>S*>5^NEB+GwUmy7+oyw@;Z3*RfSd_h{XWXX3ErBqO=SCpx( zka{+u{>&kd`p(j&f0(}%{b;UxvMFzm_b0tCCSFbx8oo@An0%wTL2{verpu{Ey~`u& zW0uTYzxarfP0fCT>K}F~{0CIkmfX|~e|RxXGgG9uQ83*|VXBVam zrK2AO_-hR8K8j7|sC$twzpmNm`sRQHA9rPYW`DlNsSk7`1OVGH@XR~QE8&kXN<28wc}w%_7ZxSgj|GtvZp=6!tR}3KZFJSTn{};q@o#3G^$OxG z&2jQZj`p1%fv-30XzDRO?9Lp`?Bi7Xc5}pqecjQsjy5U1&f4}-d3xx_E4$iFegvdX zjxLRcDCBiS+?$kTadNObIo;MFGr`Xoav=uvj z^iF2MsRniiC9Shnk5zc?MjyES#Xdv*LF$2BoQX60RFo<|D%=;4S6;F5L~T#XQq!N7 zm-dQho4we5;rjl?GMA43yf?GH#Z_t2^n{ z*8KIDs~p2f5*#a{L;};r88_5&MrutS=%1G+js$s z(*fhE`=zD+i_0E=;`$f2^e>05Y~FG2b=7yyEqY?*RkC`2?d2<0ZJX}QE}i(c;%I;S z``v48J2sz`tMmN!L8IDYimlG)cio}yrd}yLdn2v3p8Thu-FoMz7^O?>DJV`}b|>bwjn6 zrM;^o&FbUQ?k3Orxv%nfim>eOE3I!HPE7^%q1CO$GSA}o5yrDGx!oiD90c?uh z_kKGtw6sbtF)zprEj0UWu(;I8NM{_<-ZN=BNdpz4#Kw$Mxr-iY3*QC!EJ8b`F&GWZu*~SObZ+=Ept@=7)PsQVn zYgRp&n5>fB;IFdGEq1TulJ4L=7q-VbH7(2iZ98Wgm$r?^{D@bHkAAY(_MX<*yY8Lf zuGN>D&nW$UdpnMOW&K;nV=IqOKKOpyNri2d=_~jfR5Z@XDb2RscZX4N{qBGphJ|9> z{&LS385BOy5&O3yNsQa~C(CP{mzPhr_!KS-P*;%s+>^G*$+G)udlL6s*ZR#bmt=@> z3oeY**?O9#q3Qg^nfLf^7=AsM6dU&> z3h(=-@?T&2=3&sc4@Nhc?QTDNttT>Tnq|~UP0dfjTjou?RS>j^&uCJP&r>Ikv%>CC z-Z~kw5k<)5vJekM0*x1BtzrkcGr!!l&LH z;UceeH=euVWtF$A>CVLxRoS~$`}-$6^!hdPpU^X>=U%^#+Ig*cTRI_1`{m10;je$p zRKqgLFPR@#OeRdbw?Q<`kcW6UExchk34CyzsyGi{hfPfD&Ve0$fbXkWG$cm2y5 z`xjq4zwBPAK(RtNm!a%}&Wvs1-OJV&Oy=^-Ik;Kh_wH++W%u?*{JOn;FJI8_yJsWW z4WrjIw_G^ei`+jpI9u@Jl(>&$=hwp}yAG`}JQjJoaP!?g371k+&6aY^^47_SeXm|= z$)0Ea@@sW(`R7Mjiel*!j@9*@tZ%#ZO5Z)Zds!zeDR%MAynAn~JZ1}N$LM?#__+Dz z;oGO=G!)~0ZnLjAEBTWz>iz6(JLOasX=NK6^!8G^t9tEL`GVVd#kL+E>*U^AP09G> zEwT4{^P7dWQR~?=gOfUsCfVJ0dvb5}3AqDPU;ccznz=}Br8bv(<#g|>o$ZtNY1eOf zRdI5v#dYozGox(hfBn4Pdwr#=;<^P4^6zH8<6H5)>(FiPx7@8WOZ%UFy!2W@m!Z(s zaK5@=;DnN=t9H(QZ!4y7{(G%;%~v7r*UBYH)-jX&W{19*v~s@tE^nPZlAH%F-hVl( zXQAn!nN0zJpQVn>s7CF`?J7A--TZVo=>noC70*-EkaLK z?)vqI+0030=bwJvJ!h>Q_iphKt%Hj{&J~T;6P`nA^9#>GoN?AU23 zF*)zm-v8etzB@g1pS$+=ih9L&LFs#Jbwu{P+CAIsCD+6!J=bFA*vgm|Fa4ll{8H!I z?Z8`0yj>_j#V_8}ErINKUSsyyEAZL?Ix7-kBhE>WtDH$PrfR#*K3(By}V-ZGIaWk4H5a`6a1DRS`r@Ld^Blqs)Lbnl;gWIqRfY^ z;v9lHSVSuf6xKXuPHFZywB-8UGjoqt{caFY_M9B|-%dd1S|Ec{hsNZ4Puw(hu1#cU zf+{z!=i}%;n&c3n!`6bE5@S9D>bl{jaP~0!SSIYT{&1}PMQue*RmFqfpEgNM_~N_9 zzMhZi(c_=>uP;AlW^YK;FFwI>Yvx~|Ns0A*V*#! zoxE9%fx?<(HkP$Jy(GE%@7I;byx&`Ys9{5&oWK$02@9q$R{UwIuW(q%+EDZF&p%t{ zLsnT14E&ueOL?50&flNB@aZr0EVpjPL|JVGt!e?G8Abw}Kg76o1?QZQTwDHLLg3m( zrbo97LE@d~_XjL|y65}Vo@?oBEu~u;8ge>Wmh@Cin!f2&wdvxo?^+lWWi=HJ1$QtA zO)yGQxtADb8CWrggRP~$bV)-@yt+W8|2^g$O9#Q4e@BmtmL7QgYZhaotgZs5i(j3( zcV7U9{2k6Z-4B919Iqq1b*vjZ)^BPLu;+df9(SN&L*KO}>H>wS-wwQY{xkDX^YY3_ zcODO+i942X9lm<@YiSQV*k@)PYd%J-6*D*I>c0(2GkFe4E-G^Mr=MnRjnNTnIsWR~ zw`q)tvepWQN*%|Get!8QBA{@B3ludfN?iPVicWoIW_WVng##oK(7_&O{`HUP7aMs- zMJEXXF=i#ko%IzpHC4wVb$*ytY*zpaHdXC8%$@%@Qip|wqtU;KF;P}oVcQ9YqW>Qh z(l>?`)$J+?s%KzeYyd4L5PN;UNb7a%0eywn8pa+{6OUJCUaoa$VhF6@m>utMEs&|G zcCL%d!$PKj6OlTt?A4&qpXB0_%HQI2K}YPNAt<@@i3!{Z5>j5Ysr~;Sk$VTuGaX9) zaWdH<;yBj{Ux_?{g>N3(*Z=+X_2)}AfrCq(8B$I(Y^d)Onc&CH!RR8ue&?+A#~-T% z9BmroG=88tT z^LzAoNL(sa^e;K?`Xdq?;zbTBN{1C0mFh*KUu}Q=f%}A2k%NFB3rpAPIrn2u=qtQ_ z!T7S|PwCF zckZ0)`ecuNTvO?jGnZa%nS1uk?C<;g89XB=sd`O$(J#!LIeU%?n*8lPCp{Og_M=Uvy$|9p+=X}oZl>B%k058oIop7O{@$%m^S zIt7CsIgPxpE@!x$$jWKgSe&pS~fK5?ZS-D}tL|?s)F~_FvtUq)xASi>FgQ0kK-|LfkwwsT ziz)U8cO;y8e)nAeVfN&5)BQH*=l!d)pOPtb^khuKo3eilo{uy+BU7_IOUxQT}<}{9Gx1X=qD6>{v`hoF;Wc3?w(}m8@*f@GN-4;D+ z;P7mHzKVl@WI?8>iG`3Szl+Q&uqH;Pa?RrzwJZ@@1>J+znf>d%yl_u+R^47 z7@=E!@@p?s$If*DG8w-bLUgx0m{ZgkS`s4nkl88V|I1ZpkN&@%4Rb25kX&@g zh%;^Dk>^aSHO?tMHf)&rb%w*Nu=)kl!VU@_kgt1jtLC%JmHRjCPG{7|ESG925@McR zlGW~5eZQ~^taQH3^E)_SaF6G*9gi3Uzlu7ge5tRhtkmHD zZS(#7rsw|@Ca#E()xFeyL;3votRhu;p_jjHd+wZ7Sa|I@3kMt9G&Z%FVM23fRy8`G zypZ+F>M!S6`_K~+{T>Pu7EE^6vtN4t6UYpZYW&h4$Mo}X61POcH2b{!-V>B2KVuhI zDH_h((Xc<`!u&3IQ6sI>X_5KU&TcwaFYxM9d62?kCE14)Q}@1E_-Ka+m!6oS-o$mO zzf`Y3XXxPM(P{XybYtsO%`E~l8eT#xCbsDrT((a?bfl$6%=l5rhJ_O*{QrG_*7+~# zQc)gC5AubN#m_lVe{Poi@%k@b%g?P3jWPUcIwMi=gSaKLRMS#{8L73|U-#)$^qsYWFf2?z}7}v8*xQde5>gkCriARlojN7c&KjKdx;Zn| z`n-Yfeb4ptcfLyE*Q}ptYjjpFtE<{BSKao(FDu3->42)$VfB|52rN6?{Z>}_*2dcr ztG7JL6BKvOJmhjnE9g>vwK>WZli>AigMY*S@N8LSw$?x2@0S{#oWGLQ(p*~EU?a;N*VC2%d^R1BPkj&& zQ(DJ-bn35tP3^bmb6tJ!-fDhglg#G&H6yeywpH20?*7f= z(c|w+f|q!I&%8I`_3LDTxT);hHmqtA-@WI@-y=EUSGCseP)~N0-5BS*D`kz=y%~PX zmmO}Nv7z2DlsnY>`|s%WH!JEd)O9T|nQv*oIepfP?~hk~4*u8Ht-V?@_Fu@Il^jhv zrwvcnd!5;|Qv39(89tZQ*BULq!++>z@TwcmyKX4Eew%PYPUa@_^OyDZ9v8lT%@DY} z^!<+|2M@JmradgR3yrGHU*IKQ@kFGVd$RuJrBaVpPg?J`wEKvN;hBg0cQ#)9H{tH2 zif?~Rdeu5Duh$&?`SK;NSh(^ZRRM>$I@&RjVRbrR*;^*mf48mVl6&@4{?bvoMQ7zK z{QrM!TDN|CH>+WQsDH(wzWFnn!rPxp$Y^c4dC~Qt;kGb^?GO9dyZB<~GpgQHTVZ)% z(Zv_v*xw1s*O#%^ocr^pP;9Sd$Um?&Z4Q`H@9bOZl6{E!tkSP{es1+#bq=2&AzeNzg_nIXKIn-#jMTrgYn0Nf-OwCtg;|Z2i({e*fBYQzd$4FrBWKdzRdp zkbJA5A)|C+Y2mv5{0&^$p8y^n z;pt^&r>~XGpZ!qyZ^W{H44%{N7m2yN+Wl;nZBPpT%_RP1YOi@GEO;$#(cPNP@ph-s z9;RJ?7rp*?IdR{{^v*>Zeh*G)zMFV+g<*ZW`WZV$t1lne-%V=x_pY|?L4UbO_|>;o z&i}%+c@|bp6P=Lis(bpDvCrBMoppZ9C(f^6op@}f_E|Zm8_rv9D0khy-FMh5zxLy) z&nEh-&rRJh>(hoC0_oF}SDY4fe|AD|S#a3al7*idW^4?q-(nv-yZv+d`_GsERczj2 z^w+SqtFZpS{i>}oWhs#t&ul6X+7>qZ^@q+nU*;3*SFlce+HSWoI-URGK{+qUb+yN5 zZ?@5QPl+uB=v0%0{1_6PoxnyW2e?0C_K}9Z}z;hY<`RN+M9Kf z|4F4>`n5{&a;Lwkp{;h}yKdp-wf&j?PdEJL^IYp~c3S@4Td=YDoAzIQ_13q2!l{eT zBh9YvK5w@FU&g^?Er%?DpMixOo7`_5luKRt@Z&c#*CqWC_c!j`cWXk9QoX~6I+o%^ z+jqV<{JPUGBIVI#TNCw(`(OWH7F_Mj5%er_ny=yMu%BPkx#cc1201=SKdN{_?xke) zlv5@)%euZC{3`qUbvDn=Sv&$ql_FeTmz|ly-d%e2Qo*qmyUXUi@Spn2@$cQ=fA;*% z6uix~@Y=i2?xC~)XB|xDbKr5Q3ypfxTwlKFIH%lY*Iz%rnzqeRyOgc|>tmyz=Z5tA zPP%{J@6VPyC%+^4PvNuY@6UHdxKE3nx8(JG-HJ2J98OQ(PmYPVx{G+&qAEwK8bOV$5hRc$dKb+?qR zwM|%eRq^yOzKRw`57vn{Hnsac@U3VOczO5rYsvbe9uM{3PZ%tPH|}nm^R&nMfgqOx zo6-f5wXdJtRdxCG^H){7jPj+Ec01W#3T*t^cixLNz~1H%Ba7mpo2xFm?V8|`zwW%H zN@t1C%UGpvB2L;f-RxpFzGMg#@O-*z-T{5}ORrxS^LZ-Gb*b9kvGr%!+nd+sF;6)9 z==QF&lGBA=F0cP;*{;Itq_o%n$gB11cqgPW?O)=t{dF;qr_$Urs!4_|pR$=$^4(sv zy6%dbpX?#@GUZ3X_BcUq{`vd#9A0t$iCN+=nV(VnPLWfApI<=Q$yTYX)VE>HoUY1O z74N?8Y*%RzaPZ-{yW3;F@jaJ`cF#_BrSvmQ_$;u?e4<_X9!{nD+B=&oPs%YXY!%q$ zJW(#m#($#Sx0mly`k5wZwY>9N(k^x0c}f5OzX~b+%mTtrqD8&-(iFGeOTDkn{_{gEaG9irPuG^CMBPFTAA3CHZRHqSdd{$#S8<;>!J&|n!XjW~#Ka*f z$=K44J(AQH{Z2TFuFFssl8~4mktxh&4`9Mpbk`ceCl`R2@+m94kxzpD?R?R zH)mUY1HZ<`BqolV8Vx0zj{p1c<@)Z|;(PBeIC3jTMnLlM`2)^77YcRfs5tz(ksNPl z>ha_l&mu1!(c9~9zy0=M*UP388}?5>`|Rri8I6v;tAx5GT5=>5^uFELFP|k-^jRo- z_eFWF|M}JmMo-?m?muU7GpN(mjAsJlH;vDK0=iBzoIG4VEux|K`rFsqMhAArl>e?i zI6ddck4xFA^0#8XE)R_lG&jItFF`D*J8R8+-fi z+L)Y-#S_->D||H$kA0)4y2*Xn&BYqsw%<82Sov863^lIp^ub0+z+jMrDN6YdW}~A(IDPn>%AaOUi`u=+fPz1zkVFqes=d2)=O#09x2rqs&2pQ zp7Y!Ix7@GxGu;B350X5kTGlWtpfzGsVjSilNZ9{Me|wFoM^4t#x5vIz=LVmC)4kot}Rfz$mf znmoR2%-P^ROR0Lv3As&2w*3sH{A_}wBCFUN-u=9-D z!j2-GcM8C zr7&shP3L(V*=GoBXYJ71=y&z%nct2Z&Mgw^UbED(D`~%d`-yg$1pe055os^aG78;( zmGw@xb=SE?dSa2n3M)l^*UBofsd(?ruAf(y-S0H>%%+~TdE5f60@1N&_o>T*{Wpst zF^I{Y6r-BYYew$mG-EgDb>`eVCPTMVwYl55i>}7Om5HfM8i{i6X zs$P=*CQ$40haJol`C@fetaGvv=l1&?B;NhTXNkGur`4B~sa#ZQH$je+YLjg;x8;|W=tfoZhKb&{=x09+^q>1?u_n5Pi*K0{Wwy5RCoqYnk0B}SXhYh5yRdF6Y524nSys$}s84~1T) zq|6Ur65SD@D-`{0!<>sP?$bTgm4Ba6s=Yqp^_=>TZ6^15yFog2FTIvsD;jNT6|U@J zC3!Pl{H1!wnkTEyNvd2r>9OSc&y>Hpcc1YHy-ZQL^fsJJ!S|fPL_asBy=>F=aB>N~ zOzCG6xT$~X>i17<>2tbEZbhp7e!>uG;ri>8=B1Y}SZ_XOKape@xa9Ipl}*PPPFT9Q zb(C1`asO6t!LZUXWsb-4%WG5mStoEQCA(P3{#UEEX^`mP=`Pu2-}J_iaZ^N(z{?V5 z!JChnQZ`Bmyew&#y_w9sfWU%2-Na<&vAncN*G*>Rk!Hpp^ zVTsIsC~;DeZ(wI^c{7>0rKcwXTP=lNiJ{kGNb+xrZ~SN6 YsJ!L;%^r*O3=9kmp00i_>zopr0CEZhCjbBd diff --git a/media/extra_grf/chars.nfo b/media/extra_grf/chars.nfo index b2f77c6a92..6b853e9226 100644 --- a/media/extra_grf/chars.nfo +++ b/media/extra_grf/chars.nfo @@ -1,5 +1,5 @@ // -// $Id: chars.nfo 27940 2017-12-11 19:24:46Z frosch $ +// $Id: chars.nfo 27915 2017-09-11 18:31:32Z frosch $ // // 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. diff --git a/media/extra_grf/openttdgui.png b/media/extra_grf/openttdgui.png index 28ad2fbafeab4b109e2d9fbbbc20a0f6a21d653d..94871968d3e853d14fcc2342169967fd76fcf2ef 100644 GIT binary patch delta 25813 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 s?Ay+Rm?$+E{wSIpe`dRFMx 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 JF6*2UngA!_QS$%* diff --git a/os/debian/changelog b/os/debian/changelog index ce2582128c..d55b9ab4ce 100644 --- a/os/debian/changelog +++ b/os/debian/changelog @@ -1,3 +1,15 @@ +openttd (1.8.0-0) unstable; urgency=low + + * New upstream release 1.8.0 + + -- OpenTTD Sun, 01 Apr 2018 14:00:00 +0200 + +openttd (1.8.0~RC1-0) unstable; urgency=low + + * New upstream release 1.8.0-RC1 + + -- OpenTTD Wed, 21 Mar 2018 21:00:00 +0100 + openttd (1.7.2-0) unstable; urgency=low * New upstream release 1.7.2 diff --git a/os/debian/copyright b/os/debian/copyright index ab62f66a42..05cbfc4328 100644 --- a/os/debian/copyright +++ b/os/debian/copyright @@ -5,7 +5,7 @@ Source: http://www.openttd.org Files: * -Copyright: © 2004-2017 Ludvig Strigeous and others. +Copyright: © 2004-2018 Ludvig Strigeous and others. License: GPL-2.0 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2.0 as diff --git a/os/os2/installer/make_installer.cmd b/os/os2/installer/make_installer.cmd index de01554a07..5e30e4c354 100644 --- a/os/os2/installer/make_installer.cmd +++ b/os/os2/installer/make_installer.cmd @@ -1,6 +1,6 @@ @echo off -set OPENTTD_VERSION=1.7.0 +set OPENTTD_VERSION=1.8.0 set OPENSFX_VERSION=0.8.0 set NOSOUND_VERSION=0.8.0 set OPENGFX_VERSION=1.2.0 diff --git a/os/rpm/openttd.spec b/os/rpm/openttd.spec index 2dfa1a3ba3..27acc1b7df 100644 --- a/os/rpm/openttd.spec +++ b/os/rpm/openttd.spec @@ -2,7 +2,7 @@ # spec file for package openttd # # Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. -# Copyright (c) 2007-2017 The OpenTTD developers +# Copyright (c) 2007-2018 The OpenTTD developers # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,9 +17,9 @@ # Name: openttd -Version: 1.7.beta1 +Version: 1.8.beta1 Release: 0 -%define srcver 1.7.0-beta1 +%define srcver 1.8.0-beta1 Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe License: GPL-2.0 Group: Amusements/Games/Strategy/Other diff --git a/os/windows/installer/install.nsi b/os/windows/installer/install.nsi index b45b0cbccc..a6fedacdca 100644 --- a/os/windows/installer/install.nsi +++ b/os/windows/installer/install.nsi @@ -1,7 +1,7 @@ # Version numbers to update !define APPV_MAJOR 1 -!define APPV_MINOR 7 -!define APPV_MAINT 2 +!define APPV_MINOR 8 +!define APPV_MAINT 0 !define APPV_BUILD 1 !define APPV_EXTRA "" diff --git a/projects/generate b/projects/generate index 78fd3b437b..c96f541411 100755 --- a/projects/generate +++ b/projects/generate @@ -1,6 +1,6 @@ #!/bin/bash -# $Id: generate 27382 2015-08-10 20:36:57Z michi_cc $ +# $Id: generate 27918 2017-09-24 16:19:29Z frosch $ # 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. @@ -22,6 +22,15 @@ then exit 1 fi +# openttd_vs141.sln is for MSVC 2017 +# openttd_vs141.vcxproj is for MSVC 2017 +# openttd_vs141.vcxproj.filters is for MSVC 2017 +# langs_vs141.vcxproj is for MSVC 2017 +# strgen_vs141.vcxproj is for MSVC 2017 +# strgen_vs141.vcxproj.filters is for MSVC 2017 +# generate_vs141.vcxproj is for MSVC 2017 +# version_vs141.vcxproj is for MSVC 2017 + # openttd_vs140.sln is for MSVC 2015 # openttd_vs140.vcxproj is for MSVC 2015 # openttd_vs140.vcxproj.filters is for MSVC 2015 @@ -317,15 +326,21 @@ generate "$openttdvcxproj" "openttd_vs100.vcxproj" generate "$openttdfiles" "openttd_vs100.vcxproj.filters" "$openttdfilters" generate "$openttdvcxproj" "openttd_vs140.vcxproj" generate "$openttdfiles" "openttd_vs140.vcxproj.filters" "$openttdfilters" +generate "$openttdvcxproj" "openttd_vs141.vcxproj" +generate "$openttdfiles" "openttd_vs141.vcxproj.filters" "$openttdfilters" generate "$lang" "langs_vs80.vcproj" generate "$lang" "langs_vs90.vcproj" generate "$langvcxproj" "langs_vs100.vcxproj" generate "$langfiles" "langs_vs100.vcxproj.filters" generate "$langvcxproj" "langs_vs140.vcxproj" generate "$langfiles" "langs_vs140.vcxproj.filters" +generate "$langvcxproj" "langs_vs141.vcxproj" +generate "$langfiles" "langs_vs141.vcxproj.filters" generate "$settings" "settings_vs80.vcproj" "$settingscommand" generate "$settings" "settings_vs90.vcproj" "$settingscommand" generate "$settingsvcxproj" "settings_vs100.vcxproj" "$settingscommand" generate "$settingsfiles" "settings_vs100.vcxproj.filters" generate "$settingsvcxproj" "settings_vs140.vcxproj" "$settingscommand" generate "$settingsfiles" "settings_vs140.vcxproj.filters" +generate "$settingsvcxproj" "settings_vs141.vcxproj" "$settingscommand" +generate "$settingsfiles" "settings_vs141.vcxproj.filters" diff --git a/projects/generate.vbs b/projects/generate.vbs index 25001f3e13..e303f955fc 100755 --- a/projects/generate.vbs +++ b/projects/generate.vbs @@ -1,6 +1,6 @@ Option Explicit -' $Id: generate.vbs 27382 2015-08-10 20:36:57Z michi_cc $ +' $Id: generate.vbs 27918 2017-09-24 16:19:29Z frosch $ ' ' 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. @@ -10,6 +10,15 @@ Option Explicit Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") +' openttd_vs141.sln is for MSVC 2017 +' openttd_vs141.vcxproj is for MSVC 2017 +' openttd_vs141.vcxproj.filters is for MSVC 2017 +' langs_vs141.vcxproj is for MSVC 2017 +' strgen_vs141.vcxproj is for MSVC 2017 +' strgen_vs141.vcxproj.filters is for MSVC 2017 +' generate_vs141.vcxproj is for MSVC 2017 +' version_vs141.vcxproj is for MSVC 2017 + ' openttd_vs140.sln is for MSVC 2015 ' openttd_vs140.vcxproj is for MSVC 2015 ' openttd_vs140.vcxproj.filters is for MSVC 2015 @@ -380,6 +389,8 @@ generate openttdvcxproj, ROOT_DIR & "/projects/openttd_vs100.vcxproj", Null generate openttdfiles, ROOT_DIR & "/projects/openttd_vs100.vcxproj.filters", openttdfilters generate openttdvcxproj, ROOT_DIR & "/projects/openttd_vs140.vcxproj", Null generate openttdfiles, ROOT_DIR & "/projects/openttd_vs140.vcxproj.filters", openttdfilters +generate openttdvcxproj, ROOT_DIR & "/projects/openttd_vs141.vcxproj", Null +generate openttdfiles, ROOT_DIR & "/projects/openttd_vs141.vcxproj.filters", openttdfilters Dim lang, langvcxproj, langfiles lang = load_lang_data(ROOT_DIR & "/src/lang", langvcxproj, langfiles) @@ -389,6 +400,8 @@ generate langvcxproj, ROOT_DIR & "/projects/langs_vs100.vcxproj", Null generate langfiles, ROOT_DIR & "/projects/langs_vs100.vcxproj.filters", Null generate langvcxproj, ROOT_DIR & "/projects/langs_vs140.vcxproj", Null generate langfiles, ROOT_DIR & "/projects/langs_vs140.vcxproj.filters", Null +generate langvcxproj, ROOT_DIR & "/projects/langs_vs141.vcxproj", Null +generate langfiles, ROOT_DIR & "/projects/langs_vs141.vcxproj.filters", Null Dim settings, settingsvcxproj, settingscommand, settingsfiles settings = load_settings_data(ROOT_DIR & "/src/table", settingsvcxproj, settingscommand, settingsfiles) @@ -398,3 +411,5 @@ generate settingsvcxproj, ROOT_DIR & "/projects/settings_vs100.vcxproj", setting generate settingsfiles, ROOT_DIR & "/projects/settings_vs100.vcxproj.filters", Null generate settingsvcxproj, ROOT_DIR & "/projects/settings_vs140.vcxproj", settingscommand generate settingsfiles, ROOT_DIR & "/projects/settings_vs140.vcxproj.filters", Null +generate settingsvcxproj, ROOT_DIR & "/projects/settings_vs141.vcxproj", settingscommand +generate settingsfiles, ROOT_DIR & "/projects/settings_vs141.vcxproj.filters", Null diff --git a/projects/langs_vs140.vcxproj b/projects/langs_vs140.vcxproj index b866630d00..317fd34a11 100644 --- a/projects/langs_vs140.vcxproj +++ b/projects/langs_vs140.vcxproj @@ -379,7 +379,7 @@ - + {a133a442-bd0a-4ade-b117-ad7545e4bdd1} false diff --git a/projects/langs_vs140.vcxproj.in b/projects/langs_vs140.vcxproj.in index f75ef9d6b5..3271fecffa 100644 --- a/projects/langs_vs140.vcxproj.in +++ b/projects/langs_vs140.vcxproj.in @@ -50,7 +50,7 @@ !!FILES!! - + {a133a442-bd0a-4ade-b117-ad7545e4bdd1} false diff --git a/projects/openttd_vs140.vcxproj b/projects/openttd_vs140.vcxproj index 979de07700..2849dd11f3 100644 --- a/projects/openttd_vs140.vcxproj +++ b/projects/openttd_vs140.vcxproj @@ -1306,15 +1306,15 @@ - + {0f066b23-18df-4284-8265-f4a5e7e3b966} false - + {a133a442-bd0a-4ade-b117-ad7545e4bdd1} false - + {1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec} false diff --git a/projects/openttd_vs140.vcxproj.in b/projects/openttd_vs140.vcxproj.in index 100062c1ad..ac51d814d9 100644 --- a/projects/openttd_vs140.vcxproj.in +++ b/projects/openttd_vs140.vcxproj.in @@ -327,15 +327,15 @@ - + {0f066b23-18df-4284-8265-f4a5e7e3b966} false - + {a133a442-bd0a-4ade-b117-ad7545e4bdd1} false - + {1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec} false diff --git a/readme.txt b/readme.txt index ed8a9a8458..a32bfdce25 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ -Last updated: 2017-12-24 -Release version: 1.7.2 +Last updated: 2018-04-01 +Release version: 1.8.0 ------------------------------------------------------------------------ @@ -680,6 +680,7 @@ http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip X.X) Credits ---- ------- The OpenTTD team (in alphabetical order): + Grzegorz Duczyński (adf88) - General coding (since 1.7.2) Albert Hofkamp (Alberth) - GUI expert (since 0.7) Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3) Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3) diff --git a/src/3rdparty/squirrel/squirrel/sqvm.cpp b/src/3rdparty/squirrel/squirrel/sqvm.cpp index 973002b49d..c66c4aca59 100644 --- a/src/3rdparty/squirrel/squirrel/sqvm.cpp +++ b/src/3rdparty/squirrel/squirrel/sqvm.cpp @@ -215,7 +215,7 @@ bool SQVM::ObjCmp(const SQObjectPtr &o1,const SQObjectPtr &o2,SQInteger &result) _RET_SUCCEED(_integer(res)) } } - //continues through (no break needed) + FALLTHROUGH; default: _RET_SUCCEED( _userpointer(o1) < _userpointer(o2)?-1:1 ); } @@ -287,6 +287,7 @@ void SQVM::ToString(const SQObjectPtr &o,SQObjectPtr &res) //else keeps going to the default } } + FALLTHROUGH; default: seprintf(buf, lastof(buf),"(%s : 0x%p)",GetTypeName(o),(void*)_rawval(o)); } @@ -539,7 +540,7 @@ bool SQVM::FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr _generator(o1)->Resume(this, arg_2+1); _FINISH(0); } - /* FALL THROUGH */ + FALLTHROUGH; default: Raise_Error("cannot iterate %s", GetTypeName(o1)); } @@ -769,7 +770,7 @@ exception_restore: ct_stackbase = _stackbase; goto common_call; } - /* FALL THROUGH */ + FALLTHROUGH; case _OP_CALL: { ct_tailcall = false; ct_target = arg0; @@ -1101,7 +1102,7 @@ exception_trap: _lasterror = currerror; return false; } - assert(0); + NOT_REACHED(); } bool SQVM::CreateClassInstance(SQClass *theclass, SQObjectPtr &inst, SQObjectPtr &constructor) @@ -1330,7 +1331,7 @@ bool SQVM::Set(const SQObjectPtr &self,const SQObjectPtr &key,const SQObjectPtr return true; } } - //keeps going + FALLTHROUGH; case OT_USERDATA: if(_delegable(self)->_delegate) { SQObjectPtr t; diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index e4140afd7a..5b7ebb3ddf 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: ai_gui.cpp 27862 2017-05-03 20:05:52Z frosch $ */ +/* $Id: ai_gui.cpp 27787 2017-03-12 18:19:01Z peter1138 $ */ /* * This file is part of OpenTTD. diff --git a/src/ai/ai_info.cpp b/src/ai/ai_info.cpp index 7df34cdf39..be9c3b1a52 100644 --- a/src/ai/ai_info.cpp +++ b/src/ai/ai_info.cpp @@ -1,4 +1,4 @@ -/* $Id: ai_info.cpp 27518 2016-03-01 20:00:22Z frosch $ */ +/* $Id: ai_info.cpp 27780 2017-03-11 20:50:26Z frosch $ */ /* * This file is part of OpenTTD. @@ -28,7 +28,8 @@ static bool CheckAPIVersion(const char *api_version) { return strcmp(api_version, "0.7") == 0 || strcmp(api_version, "1.0") == 0 || strcmp(api_version, "1.1") == 0 || strcmp(api_version, "1.2") == 0 || strcmp(api_version, "1.3") == 0 || strcmp(api_version, "1.4") == 0 || - strcmp(api_version, "1.5") == 0 || strcmp(api_version, "1.6") == 0 || strcmp(api_version, "1.7") == 0; + strcmp(api_version, "1.5") == 0 || strcmp(api_version, "1.6") == 0 || strcmp(api_version, "1.7") == 0 || + strcmp(api_version, "1.8") == 0; } #if defined(WIN32) diff --git a/src/ai/ai_scanner.cpp b/src/ai/ai_scanner.cpp index 9fc8542312..04e2a71314 100644 --- a/src/ai/ai_scanner.cpp +++ b/src/ai/ai_scanner.cpp @@ -1,4 +1,4 @@ -/* $Id: ai_scanner.cpp 26509 2014-04-25 15:40:32Z rubidium $ */ +/* $Id: ai_scanner.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -114,7 +114,7 @@ AIInfo *AIScannerInfo::FindInfo(const char *nameParam, int versionParam, bool fo *e = '\0'; e++; versionParam = atoi(e); - /* FALL THROUGH, like we were calling this function with a version. */ + /* Continue, like we were calling this function with a version. */ } if (force_exact_match) { diff --git a/src/airport.cpp b/src/airport.cpp index 65c2f55487..1b90aa09c1 100644 --- a/src/airport.cpp +++ b/src/airport.cpp @@ -1,4 +1,4 @@ -/* $Id: airport.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: airport.cpp 27908 2017-08-31 06:55:38Z adf88 $ */ /* * This file is part of OpenTTD. @@ -27,7 +27,7 @@ * @param delta_z Height of the airport above the land. */ #define AIRPORT_GENERIC(name, terminals, num_helipads, flags, delta_z) \ - static AirportFTAClass _airportfta_ ## name(_airport_moving_data_ ## name, terminals, \ + static const AirportFTAClass _airportfta_ ## name(_airport_moving_data_ ## name, terminals, \ num_helipads, _airport_entries_ ## name, flags, _airport_fta_ ## name, delta_z); /** diff --git a/src/blitter/32bpp_anim.cpp b/src/blitter/32bpp_anim.cpp index 60f844e43b..b242e23145 100644 --- a/src/blitter/32bpp_anim.cpp +++ b/src/blitter/32bpp_anim.cpp @@ -1,4 +1,4 @@ -/* $Id: 32bpp_anim.cpp 27863 2017-05-03 20:09:51Z frosch $ */ +/* $Id: 32bpp_anim.cpp 27796 2017-03-18 17:14:53Z frosch $ */ /* * This file is part of OpenTTD. diff --git a/src/blitter/32bpp_anim.hpp b/src/blitter/32bpp_anim.hpp index 90dc7f3ca5..06083ab4ca 100644 --- a/src/blitter/32bpp_anim.hpp +++ b/src/blitter/32bpp_anim.hpp @@ -1,4 +1,4 @@ -/* $Id: 32bpp_anim.hpp 27863 2017-05-03 20:09:51Z frosch $ */ +/* $Id: 32bpp_anim.hpp 27796 2017-03-18 17:14:53Z frosch $ */ /* * This file is part of OpenTTD. diff --git a/src/blitter/32bpp_anim_sse4.cpp b/src/blitter/32bpp_anim_sse4.cpp index 2c5bd279f1..d53b877082 100644 --- a/src/blitter/32bpp_anim_sse4.cpp +++ b/src/blitter/32bpp_anim_sse4.cpp @@ -1,4 +1,4 @@ -/* $Id: 32bpp_anim_sse4.cpp 27863 2017-05-03 20:09:51Z frosch $ */ +/* $Id: 32bpp_anim_sse4.cpp 27796 2017-03-18 17:14:53Z frosch $ */ /* * This file is part of OpenTTD. diff --git a/src/blitter/8bpp_simple.cpp b/src/blitter/8bpp_simple.cpp index 33c6c0726b..8b87fe917d 100644 --- a/src/blitter/8bpp_simple.cpp +++ b/src/blitter/8bpp_simple.cpp @@ -1,4 +1,4 @@ -/* $Id: 8bpp_simple.cpp 27863 2017-05-03 20:09:51Z frosch $ */ +/* $Id: 8bpp_simple.cpp 27837 2017-03-30 21:33:40Z peter1138 $ */ /* * This file is part of OpenTTD. diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index 715c87e99e..7add9de4ff 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: build_vehicle_gui.cpp 26960 2014-10-05 11:20:02Z peter1138 $ */ +/* $Id: build_vehicle_gui.cpp 27799 2017-03-18 20:46:15Z alberth $ */ /* * This file is part of OpenTTD. @@ -719,7 +719,15 @@ static int DrawShipPurchaseInfo(int left, int right, int y, EngineID engine_numb return y; } -/* Draw aircraft specific details */ +/** + * Draw aircraft specific details in the buy window. + * @param left Left edge of the window to draw in. + * @param right Right edge of the window to draw in. + * @param y Top of the area to draw in. + * @param engine_number Engine to display. + * @param refittable If set, the aircraft can be refitted. + * @return Bottom of the used area. + */ static int DrawAircraftPurchaseInfo(int left, int right, int y, EngineID engine_number, bool refittable) { const Engine *e = Engine::Get(engine_number); @@ -755,6 +763,12 @@ static int DrawAircraftPurchaseInfo(int left, int right, int y, EngineID engine_ DrawString(left, right, y, STR_PURCHASE_INFO_RUNNINGCOST); y += FONT_HEIGHT_NORMAL; + /* Aircraft type */ + SetDParam(0, e->GetAircraftTypeText()); + DrawString(left, right, y, STR_PURCHASE_INFO_AIRCRAFT_TYPE); + y += FONT_HEIGHT_NORMAL; + + /* Aircraft range, if available. */ uint16 range = e->GetRange(); if (range != 0) { SetDParam(0, range); diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 3a94078582..36320b6901 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: company_cmd.cpp 26802 2014-09-07 16:12:58Z alberth $ */ +/* $Id: company_cmd.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -162,7 +162,7 @@ static bool IsValidCompanyManagerFace(CompanyManagerFace cmf) for (CompanyManagerFaceVariable cmfv = CMFV_CHEEKS; cmfv < CMFV_END; cmfv++) { switch (cmfv) { case CMFV_MOUSTACHE: if (!has_moustache) continue; break; - case CMFV_LIPS: // FALL THROUGH + case CMFV_LIPS: case CMFV_NOSE: if (has_moustache) continue; break; case CMFV_TIE_EARRING: if (!has_tie_earring) continue; break; case CMFV_GLASSES: if (!has_glasses) continue; break; diff --git a/src/company_gui.cpp b/src/company_gui.cpp index a0e7498474..97f669573f 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: company_gui.cpp 27427 2015-10-30 17:24:30Z frosch $ */ +/* $Id: company_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -318,7 +318,8 @@ struct CompanyFinancesWindow : Window { case WID_CF_EXPS_PRICE2: case WID_CF_EXPS_PRICE3: size->height = _expenses_list_types[type].GetHeight(); - /* FALL THROUGH */ + FALLTHROUGH; + case WID_CF_BALANCE_VALUE: case WID_CF_LOAN_VALUE: case WID_CF_TOTAL_VALUE: @@ -636,7 +637,8 @@ public: size->width = 0; break; } - /* FALL THROUGH */ + FALLTHROUGH; + case WID_SCL_PRI_COL_DROPDOWN: { int padding = this->square.width + NWidgetScrollbar::GetVerticalDimension().width + 10; for (const StringID *id = _colour_dropdown; id != endof(_colour_dropdown); id++) { @@ -892,7 +894,7 @@ void DrawCompanyManagerFace(CompanyManagerFace cmf, int colour, int x, int y) for (CompanyManagerFaceVariable cmfv = CMFV_CHEEKS; cmfv < CMFV_END; cmfv++) { switch (cmfv) { case CMFV_MOUSTACHE: if (!has_moustache) continue; break; - case CMFV_LIPS: // FALL THROUGH + case CMFV_LIPS: case CMFV_NOSE: if (has_moustache) continue; break; case CMFV_TIE_EARRING: if (!has_tie_earring) continue; break; case CMFV_GLASSES: if (!has_glasses) continue; break; @@ -1365,7 +1367,7 @@ public: /* OK button */ case WID_SCMF_ACCEPT: DoCommandP(0, 0, this->face, CMD_SET_COMPANY_MANAGER_FACE); - /* FALL THROUGH */ + FALLTHROUGH; /* Cancel button */ case WID_SCMF_CANCEL: @@ -2381,7 +2383,7 @@ struct CompanyWindow : Window virtual void OnPlaceObject(Point pt, TileIndex tile) { - if (DoCommandP(tile, OBJECT_HQ, 0, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS))) { + if (DoCommandP(tile, OBJECT_HQ, 0, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS)) && !_shift_pressed) { ResetObjectToPlace(); this->RaiseButtons(); } diff --git a/src/company_manager_face.h b/src/company_manager_face.h index 1c104713c1..ebbc6a348a 100644 --- a/src/company_manager_face.h +++ b/src/company_manager_face.h @@ -1,4 +1,4 @@ -/* $Id: company_manager_face.h 25490 2013-06-27 20:20:13Z rubidium $ */ +/* $Id: company_manager_face.h 27975 2018-03-11 07:16:58Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -78,7 +78,7 @@ static const CompanyManagerFaceBitsInfo _cmf_info[] = { /* CMFV_MOUSTACHE */ { 13, 2, { 3, 0, 3, 0 }, { 0x367, 0, 0x397, 0 } }, ///< Depends on CMFV_HAS_MOUSTACHE /* CMFV_LIPS */ { 13, 4, { 12, 10, 9, 9 }, { 0x35B, 0x351, 0x3A5, 0x3C8 } }, ///< Depends on !CMFV_HAS_MOUSTACHE /* CMFV_NOSE */ { 17, 3, { 8, 4, 4, 5 }, { 0x349, 0x34C, 0x393, 0x3B3 } }, ///< Depends on !CMFV_HAS_MOUSTACHE - /* CMFV_HAIR */ { 20, 4, { 9, 5, 5, 4 }, { 0x382, 0x38B, 0x3D4, 0x3D9 } }, + /* CMFV_HAIR */ { 20, 4, { 9, 5, 5, 5 }, { 0x382, 0x38B, 0x3D4, 0x3D9 } }, /* CMFV_JACKET */ { 24, 2, { 3, 3, 3, 3 }, { 0x36B, 0x378, 0x36B, 0x378 } }, /* CMFV_COLLAR */ { 26, 2, { 4, 4, 4, 4 }, { 0x36E, 0x37B, 0x36E, 0x37B } }, /* CMFV_TIE_EARRING */ { 28, 3, { 6, 3, 6, 3 }, { 0x372, 0x37F, 0x372, 0x3D1 } }, ///< Depends on CMFV_HAS_TIE_EARRING diff --git a/src/console.cpp b/src/console.cpp index 612d696f3b..a3e005c90d 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -1,4 +1,4 @@ -/* $Id: console.cpp 27939 2017-12-11 19:20:44Z frosch $ */ +/* $Id: console.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -468,7 +468,7 @@ void IConsoleCmdExec(const char *cmdstr) tokenstream[tstream_i++] = *++cmdptr; break; } - /* FALL THROUGH */ + FALLTHROUGH; default: // Normal character tokenstream[tstream_i++] = *cmdptr; diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 0cf76f1c9e..1efc72068b 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -1,4 +1,4 @@ -/* $Id: console_cmds.cpp 27939 2017-12-11 19:20:44Z frosch $ */ +/* $Id: console_cmds.cpp 27914 2017-09-10 14:03:29Z adf88 $ */ /* * This file is part of OpenTTD. diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp index 2940e81d15..90f2e23cc6 100644 --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: depot_gui.cpp 27940 2017-12-11 19:24:46Z frosch $ */ +/* $Id: depot_gui.cpp 27938 2017-12-10 13:48:49Z frosch $ */ /* * This file is part of OpenTTD. @@ -147,6 +147,7 @@ static void TrainDepotMoveVehicle(const Vehicle *wagon, VehicleID sel, const Veh static VehicleCellSize _base_block_sizes_depot[VEH_COMPANY_END]; ///< Cell size for vehicle images in the depot view. static VehicleCellSize _base_block_sizes_purchase[VEH_COMPANY_END]; ///< Cell size for vehicle images in the purchase list. +static uint _consistent_train_width; ///< Whether trains of all lengths are consistently scaled. Either TRAININFO_DEFAULT_VEHICLE_WIDTH, VEHICLEINFO_FULL_VEHICLE_WIDTH, or 0. /** * Get the GUI cell size for a vehicle image. @@ -219,6 +220,34 @@ void InitDepotWindowBlockSizes() InitBlocksizeForVehicles(vt, EIT_IN_DEPOT); InitBlocksizeForVehicles(vt, EIT_PURCHASE); } + + _consistent_train_width = TRAININFO_DEFAULT_VEHICLE_WIDTH; + bool first = true; + const Engine *e; + FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { + if (!e->IsEnabled()) continue; + + uint w = TRAININFO_DEFAULT_VEHICLE_WIDTH; + if (e->GetGRF() != NULL && is_custom_sprite(e->u.rail.image_index)) { + w = e->GetGRF()->traininfo_vehicle_width; + if (w != VEHICLEINFO_FULL_VEHICLE_WIDTH) { + /* Hopeless. + * This is a NewGRF vehicle that uses TRAININFO_DEFAULT_VEHICLE_WIDTH. + * If the vehicles are shorter than 8/8 we have fractional lengths, which are not consistent after rounding. + */ + _consistent_train_width = 0; + break; + } + } + + if (first) { + _consistent_train_width = w; + first = false; + } else if (w != _consistent_train_width) { + _consistent_train_width = 0; + break; + } + } } static void DepotSellAllConfirmationCallback(Window *w, bool confirmed); @@ -292,7 +321,10 @@ struct DepotWindow : Window { const Train *u = Train::From(v); free_wagon = u->IsFreeWagon(); - uint x_space = free_wagon ? ScaleGUITrad(TRAININFO_DEFAULT_VEHICLE_WIDTH) : 0; + uint x_space = free_wagon ? + ScaleGUITrad(_consistent_train_width != 0 ? _consistent_train_width : TRAININFO_DEFAULT_VEHICLE_WIDTH) : + 0; + DrawTrainImage(u, image_left + (rtl ? 0 : x_space), image_right - (rtl ? x_space : 0), sprite_y - 1, this->sel, EIT_IN_DEPOT, free_wagon ? 0 : this->hscroll->GetPosition(), this->vehicle_over); @@ -340,6 +372,29 @@ struct DepotWindow : Window { /* Set the row and number of boxes in each row based on the number of boxes drawn in the matrix */ const NWidgetCore *wid = this->GetWidget(WID_D_MATRIX); + + /* Draw vertical separators at whole tiles. + * This only works in two cases: + * - All vehicles use VEHICLEINFO_FULL_VEHICLE_WIDTH as reference width. + * - All vehicles are 8/8. This cannot be checked for NewGRF, so instead we check for "all vehicles are original vehicles". + */ + if (this->type == VEH_TRAIN && _consistent_train_width != 0) { + int w = ScaleGUITrad(2 * _consistent_train_width); + int col = _colour_gradient[wid->colour][4]; + int image_left = rtl ? r.left + this->count_width : r.left + this->header_width; + int image_right = rtl ? r.right - this->header_width : r.right - this->count_width; + int first_line = w + (-this->hscroll->GetPosition()) % w; + if (rtl) { + for (int x = image_right - first_line; x >= image_left; x -= w) { + GfxDrawLine(x, r.top, x, r.bottom, col, 1, 3); + } + } else { + for (int x = image_left + first_line; x <= image_right; x += w) { + GfxDrawLine(x, r.top, x, r.bottom, col, 1, 3); + } + } + } + uint16 rows_in_display = wid->current_y / wid->resize_y; uint16 num = this->vscroll->GetPosition() * this->num_columns; @@ -445,7 +500,8 @@ struct DepotWindow : Window { switch (this->type) { case VEH_TRAIN: if (wagon) return MODE_ERROR; - /* FALL THROUGH */ + FALLTHROUGH; + case VEH_ROAD: if (xm <= this->flag_width) return MODE_START_STOP; break; @@ -679,7 +735,7 @@ struct DepotWindow : Window { } /* Always have 1 empty row, so people can change the setting of the train */ this->vscroll->SetCount(this->vehicle_list.Length() + this->wagon_list.Length() + 1); - /* Always make it longer than the longest train, so you can attach vehicles at the end */ + /* Always make it longer than the longest train, so you can attach vehicles at the end, and also see the next vertical tile separator line */ this->hscroll->SetCount(max_width + ScaleGUITrad(2 * VEHICLEINFO_FULL_VEHICLE_WIDTH + 1)); } else { this->vscroll->SetCount(CeilDiv(this->vehicle_list.Length(), this->num_columns)); diff --git a/src/economy.cpp b/src/economy.cpp index 51c65bc85b..0ced0467c1 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -1,4 +1,4 @@ -/* $Id: economy.cpp 27862 2017-05-03 20:05:52Z frosch $ */ +/* $Id: economy.cpp 27981 2018-03-11 12:46:05Z frosch $ */ /* * This file is part of OpenTTD. @@ -654,12 +654,16 @@ static void CompanyCheckBankrupt(Company *c) */ static void CompaniesGenStatistics() { - Station *st; + /* Check for bankruptcy each month */ + Company *c; + FOR_ALL_COMPANIES(c) { + CompanyCheckBankrupt(c); + } Backup cur_company(_current_company, FILE_LINE); - Company *c; if (!_settings_game.economy.infrastructure_maintenance) { + Station *st; FOR_ALL_STATIONS(st) { cur_company.Change(st->owner); CommandCost cost(EXPENSES_PROPERTY, _price[PR_STATION_VALUE] >> 1); @@ -688,11 +692,6 @@ static void CompaniesGenStatistics() } cur_company.Restore(); - /* Check for bankruptcy each month */ - FOR_ALL_COMPANIES(c) { - CompanyCheckBankrupt(c); - } - /* Only run the economic statics and update company stats every 3rd month (1st of quarter). */ if (!HasBit(1 << 0 | 1 << 3 | 1 << 6 | 1 << 9, _cur_month)) return; @@ -1726,7 +1725,7 @@ static void LoadUnloadVehicle(Vehicle *front) /* update stats */ int t; switch (front->type) { - case VEH_TRAIN: /* FALL THROUGH */ + case VEH_TRAIN: case VEH_SHIP: t = front->vcache.cached_max_speed; break; diff --git a/src/elrail.cpp b/src/elrail.cpp index 170f205a76..f939800907 100644 --- a/src/elrail.cpp +++ b/src/elrail.cpp @@ -1,4 +1,4 @@ -/* $Id: elrail.cpp 27676 2016-11-05 11:53:03Z frosch $ */ +/* $Id: elrail.cpp 27812 2017-03-20 17:57:24Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -99,6 +99,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override) break; case MP_TUNNELBRIDGE: + if (GetTunnelBridgeTransportType(t) != TRANSPORT_RAIL) return TRACK_BIT_NONE; if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE; if (override != NULL && (IsTunnel(t) || GetTunnelBridgeLength(t, GetOtherBridgeEnd(t)) > 0)) { *override = 1 << GetTunnelBridgeDirection(t); diff --git a/src/engine.cpp b/src/engine.cpp index 82b29ddd3e..9037d5ccc6 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -1,4 +1,4 @@ -/* $Id: engine.cpp 27700 2016-12-20 12:35:36Z frosch $ */ +/* $Id: engine.cpp 27797 2017-03-18 20:43:43Z alberth $ */ /* * This file is part of OpenTTD. @@ -464,7 +464,26 @@ uint16 Engine::GetRange() const } /** - * Initializes the EngineOverrideManager with the default engines. + * Get the name of the aircraft type for display purposes. + * @return Aircraft type string. + */ +StringID Engine::GetAircraftTypeText() const +{ + switch (this->type) { + case VEH_AIRCRAFT: + switch (this->u.air.subtype) { + case AIR_HELI: return STR_LIVERY_HELICOPTER; + case AIR_CTOL: return STR_LIVERY_SMALL_PLANE; + case AIR_CTOL | AIR_FAST: return STR_LIVERY_LARGE_PLANE; + default: NOT_REACHED(); + } + + default: NOT_REACHED(); + } +} + +/** + * Initializes the #EngineOverrideManager with the default engines. */ void EngineOverrideManager::ResetToDefaultMapping() { diff --git a/src/engine_base.h b/src/engine_base.h index 2b49c29657..0e857028c8 100644 --- a/src/engine_base.h +++ b/src/engine_base.h @@ -1,4 +1,4 @@ -/* $Id: engine_base.h 26802 2014-09-07 16:12:58Z alberth $ */ +/* $Id: engine_base.h 27797 2017-03-18 20:43:43Z alberth $ */ /* * This file is part of OpenTTD. @@ -111,6 +111,7 @@ struct Engine : EnginePool::PoolItem<&_engine_pool> { uint GetDisplayMaxTractiveEffort() const; Date GetLifeLengthInDays() const; uint16 GetRange() const; + StringID GetAircraftTypeText() const; /** * Check whether the engine is hidden in the GUI for the given company. diff --git a/src/engine_gui.cpp b/src/engine_gui.cpp index 707e121e3e..87a08ace02 100644 --- a/src/engine_gui.cpp +++ b/src/engine_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: engine_gui.cpp 26934 2014-09-28 09:21:51Z peter1138 $ */ +/* $Id: engine_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -126,9 +126,9 @@ struct EnginePreviewWindow : Window { switch (widget) { case WID_EP_YES: DoCommandP(0, this->window_number, 0, CMD_WANT_ENGINE_PREVIEW); - /* FALL THROUGH */ + FALLTHROUGH; case WID_EP_NO: - delete this; + if (!_shift_pressed) delete this; break; } } @@ -196,6 +196,7 @@ static StringID GetAircraftEngineInfoString(const Engine *e) uint i = 0; SetDParam(i++, e->GetCost()); SetDParam(i++, e->GetDisplayMaxSpeed()); + SetDParam(i++, e->GetAircraftTypeText()); if (range > 0) SetDParam(i++, range); SetDParam(i++, cargo); SetDParam(i++, capacity); @@ -204,10 +205,10 @@ static StringID GetAircraftEngineInfoString(const Engine *e) SetDParam(i++, CT_MAIL); SetDParam(i++, mail_capacity); SetDParam(i++, e->GetRunningCost()); - return range > 0 ? STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST : STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST; + return range > 0 ? STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST : STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST; } else { SetDParam(i++, e->GetRunningCost()); - return range > 0 ? STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST : STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST; + return range > 0 ? STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST : STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST; } } @@ -224,7 +225,7 @@ static StringID GetRoadVehEngineInfoString(const Engine *e) SetDParam(2, CT_INVALID); } SetDParam(4, e->GetRunningCost()); - return STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST; + return STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST; } else { SetDParam(0, e->GetCost()); SetDParam(2, e->GetDisplayMaxSpeed()); @@ -252,7 +253,7 @@ static StringID GetShipEngineInfoString(const Engine *e) SetDParam(2, e->GetDefaultCargoType()); SetDParam(3, e->GetDisplayDefaultCapacity()); SetDParam(4, e->GetRunningCost()); - return STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST; + return STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST; } diff --git a/src/fileio.cpp b/src/fileio.cpp index 2943bf8e1a..cdcdbfcd90 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -1,4 +1,4 @@ -/* $Id: fileio.cpp 26514 2014-04-25 21:29:54Z rubidium $ */ +/* $Id: fileio.cpp 27954 2017-12-27 22:07:59Z frosch $ */ /* * This file is part of OpenTTD. @@ -522,7 +522,7 @@ FILE *FioFOpenFile(const char *filename, const char *mode, Subdirectory subdir, case BASESET_DIR: f = FioFOpenFile(filename, mode, OLD_GM_DIR, filesize); if (f != NULL) break; - /* FALL THROUGH */ + FALLTHROUGH; case NEWGRF_DIR: f = FioFOpenFile(filename, mode, OLD_DATA_DIR, filesize); break; @@ -584,32 +584,6 @@ bool AppendPathSeparator(char *buf, const char *last) return true; } -/** - * Allocates and files a variable with the full path - * based on the given directory. - * @param dir the directory to base the path on - * @return the malloced full path - */ -char *BuildWithFullPath(const char *dir) -{ - char *dest = MallocT(MAX_PATH); - char *last = dest + MAX_PATH - 1; - strecpy(dest, dir, last); - - /* Check if absolute or relative path */ - const char *s = strchr(dest, PATHSEPCHAR); - - /* Add absolute path */ - if (s == NULL || dest != s) { - if (getcwd(dest, MAX_PATH) == NULL) *dest = '\0'; - AppendPathSeparator(dest, last); - strecat(dest, dir, last); - } - AppendPathSeparator(dest, last); - - return dest; -} - /** * Find the first directory in a tar archive. * @param tarname the name of the tar archive to look in. @@ -1032,30 +1006,29 @@ extern void DetermineBasePaths(const char *exe); */ static bool ChangeWorkingDirectoryToExecutable(const char *exe) { + char tmp[MAX_PATH]; + strecpy(tmp, exe, lastof(tmp)); + bool success = false; #ifdef WITH_COCOA - char *app_bundle = strchr(exe, '.'); + char *app_bundle = strchr(tmp, '.'); while (app_bundle != NULL && strncasecmp(app_bundle, ".app", 4) != 0) app_bundle = strchr(&app_bundle[1], '.'); - if (app_bundle != NULL) app_bundle[0] = '\0'; + if (app_bundle != NULL) *app_bundle = '\0'; #endif /* WITH_COCOA */ - char *s = const_cast(strrchr(exe, PATHSEPCHAR)); + char *s = strrchr(tmp, PATHSEPCHAR); if (s != NULL) { *s = '\0'; #if defined(__DJGPP__) /* If we want to go to the root, we can't use cd C:, but we must use '/' */ - if (s[-1] == ':') chdir("/"); + if (s > tmp && *(s - 1) == ':') chdir("/"); #endif - if (chdir(exe) != 0) { + if (chdir(tmp) != 0) { DEBUG(misc, 0, "Directory with the binary does not exist?"); } else { success = true; } - *s = PATHSEPCHAR; } -#ifdef WITH_COCOA - if (app_bundle != NULL) app_bundle[0] = '.'; -#endif /* WITH_COCOA */ return success; } @@ -1478,7 +1451,7 @@ uint FileScanner::Scan(const char *extension, Subdirectory sd, bool tars, bool r switch (sd) { case BASESET_DIR: num += this->Scan(extension, OLD_GM_DIR, tars, recursive); - /* FALL THROUGH */ + FALLTHROUGH; case NEWGRF_DIR: num += this->Scan(extension, OLD_DATA_DIR, tars, recursive); break; diff --git a/src/fios.cpp b/src/fios.cpp index a5bc0f7988..9eb79941df 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -1,4 +1,4 @@ -/* $Id: fios.cpp 27653 2016-09-04 16:06:50Z alberth $ */ +/* $Id: fios.cpp 27896 2017-08-20 21:04:21Z frosch $ */ /* * This file is part of OpenTTD. @@ -77,7 +77,7 @@ void FileList::BuildFileList(AbstractFileType abstract_filetype, SaveLoadOperati { this->Clear(); - assert(fop == SLO_LOAD || SLO_SAVE); + assert(fop == SLO_LOAD || fop == SLO_SAVE); switch (abstract_filetype) { case FT_NONE: break; @@ -158,7 +158,8 @@ const char *FiosBrowseTo(const FiosItem *item) #elif defined(WIN32) || defined(__OS2__) seprintf(_fios_path, _fios_path_last, "%c:" PATHSEP, item->title[0]); #endif - /* FALL THROUGH */ + break; + case FIOS_TYPE_INVALID: break; diff --git a/src/fios_gui.cpp b/src/fios_gui.cpp index 4b146a6abd..d8b00e5d0c 100644 --- a/src/fios_gui.cpp +++ b/src/fios_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: fios_gui.cpp 27653 2016-09-04 16:06:50Z alberth $ */ +/* $Id: fios_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -702,7 +702,8 @@ public: this->vscroll->SetCount(this->fios_items.Length()); this->selected = NULL; _load_check_data.Clear(); - /* FALL THROUGH */ + FALLTHROUGH; + case 1: /* Selection changes */ if (!gui_scope) break; diff --git a/src/fontcache.cpp b/src/fontcache.cpp index 56ceda9324..c334f3bbc9 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -1,4 +1,4 @@ -/* $Id: fontcache.cpp 27187 2015-03-15 12:19:58Z frosch $ */ +/* $Id: fontcache.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -41,7 +41,7 @@ FontCache::FontCache(FontSize fs) : parent(FontCache::Get(fs)), fs(fs), height(_ ascender(_default_font_ascender[fs]), descender(_default_font_ascender[fs] - _default_font_height[fs]), units_per_em(1) { - assert(parent == NULL || this->fs == parent->fs); + assert(this->parent == NULL || this->fs == this->parent->fs); FontCache::caches[this->fs] = this; Layouter::ResetFontCache(this->fs); } @@ -49,7 +49,7 @@ FontCache::FontCache(FontSize fs) : parent(FontCache::Get(fs)), fs(fs), height(_ /** Clean everything up. */ FontCache::~FontCache() { - assert(this->fs == parent->fs); + assert(this->fs == this->parent->fs); FontCache::caches[this->fs] = this->parent; Layouter::ResetFontCache(this->fs); } @@ -126,7 +126,7 @@ void SpriteFontCache::InitializeUnicodeGlyphMap() SpriteID base; switch (this->fs) { default: NOT_REACHED(); - case FS_MONO: // Use normal as default for mono spaced font, i.e. FALL THROUGH + case FS_MONO: // Use normal as default for mono spaced font case FS_NORMAL: base = SPR_ASCII_SPACE; break; case FS_SMALL: base = SPR_ASCII_SPACE_SMALL; break; case FS_LARGE: base = SPR_ASCII_SPACE_BIG; break; @@ -474,7 +474,7 @@ static bool GetFontAAState(FontSize size) const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key) { - if ((key & SPRITE_GLYPH) != 0) return parent->GetGlyph(key); + if ((key & SPRITE_GLYPH) != 0) return this->parent->GetGlyph(key); /* Check for the glyph in our cache */ GlyphEntry *glyph = this->GetGlyphPtr(key); diff --git a/src/game/game_info.cpp b/src/game/game_info.cpp index 7ee65aef2f..ff6f0cab8d 100644 --- a/src/game/game_info.cpp +++ b/src/game/game_info.cpp @@ -1,4 +1,4 @@ -/* $Id: game_info.cpp 27518 2016-03-01 20:00:22Z frosch $ */ +/* $Id: game_info.cpp 27780 2017-03-11 20:50:26Z frosch $ */ /* * This file is part of OpenTTD. @@ -25,7 +25,8 @@ static bool CheckAPIVersion(const char *api_version) { return strcmp(api_version, "1.2") == 0 || strcmp(api_version, "1.3") == 0 || strcmp(api_version, "1.4") == 0 || - strcmp(api_version, "1.5") == 0 || strcmp(api_version, "1.6") == 0 || strcmp(api_version, "1.7") == 0; + strcmp(api_version, "1.5") == 0 || strcmp(api_version, "1.6") == 0 || strcmp(api_version, "1.7") == 0 || + strcmp(api_version, "1.8") == 0; } #if defined(WIN32) diff --git a/src/game/game_scanner.cpp b/src/game/game_scanner.cpp index af9eedd9f6..c4eae02a18 100644 --- a/src/game/game_scanner.cpp +++ b/src/game/game_scanner.cpp @@ -1,4 +1,4 @@ -/* $Id: game_scanner.cpp 26487 2014-04-23 21:16:58Z rubidium $ */ +/* $Id: game_scanner.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -55,7 +55,7 @@ GameInfo *GameScannerInfo::FindInfo(const char *nameParam, int versionParam, boo *e = '\0'; e++; versionParam = atoi(e); - /* FALL THROUGH, like we were calling this function with a version. */ + /* Continue like we were calling this function with a version. */ } if (force_exact_match) { diff --git a/src/gfx_func.h b/src/gfx_func.h index 0514264b46..58119eb7e9 100644 --- a/src/gfx_func.h +++ b/src/gfx_func.h @@ -1,4 +1,4 @@ -/* $Id: gfx_func.h 27711 2016-12-25 17:55:10Z frosch $ */ +/* $Id: gfx_func.h 27829 2017-03-25 23:19:41Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -142,6 +142,18 @@ void CheckBlitter(); bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int height); +/** + * Determine where to draw a centred object inside a widget. + * @param min The top or left coordinate. + * @param max The bottom or right coordinate. + * @param size The height or width of the object to draw. + * @return Offset of where to start drawing the object. + */ +static inline int CenterBounds(int min, int max, int size) +{ + return min + (max - min - size + 1) / 2; +} + /* window.cpp */ void DrawOverlappedWindowForAll(int left, int top, int right, int bottom); diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 99b8da1bb9..e1988f00f0 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: group_gui.cpp 27630 2016-08-15 18:33:52Z frosch $ */ +/* $Id: group_gui.cpp 27822 2017-03-24 07:33:31Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -55,6 +55,7 @@ static const NWidgetPart _nested_group_widgets[] = { SetFill(1, 0), SetResize(0, 1), SetScrollbar(WID_GL_LIST_GROUP_SCROLLBAR), NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_GL_LIST_GROUP_SCROLLBAR), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_INFO), SetFill(1, 0), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_CREATE_GROUP), SetFill(0, 1), SetDataTip(SPR_GROUP_CREATE_TRAIN, STR_GROUP_CREATE_TOOLTIP), @@ -371,6 +372,9 @@ public: max_icon_height = max(max_icon_height, GetSpriteSize(this->GetWidget(WID_GL_DELETE_GROUP)->widget_data).height); max_icon_height = max(max_icon_height, GetSpriteSize(this->GetWidget(WID_GL_REPLACE_PROTECTION)->widget_data).height); + /* ... minus the height of the group info ... */ + max_icon_height += (FONT_HEIGHT_NORMAL * 3) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; + /* Get a multiple of tiny_step_height of that amount */ size->height = Ceil(size->height - max_icon_height, tiny_step_height); break; @@ -403,6 +407,11 @@ public: *size = maxdim(*size, d); break; } + + case WID_GL_INFO: { + size->height = (FONT_HEIGHT_NORMAL * 3) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM; + break; + } } } @@ -527,6 +536,44 @@ public: DrawGroupInfo(r.top + WD_FRAMERECT_TOP, r.left, r.right, DEFAULT_GROUP); break; + case WID_GL_INFO: { + Money this_year = 0; + Money last_year = 0; + uint32 occupancy = 0; + uint32 vehicle_count = this->vehicles.Length(); + + for (uint i = 0; i < vehicle_count; i++) { + const Vehicle *v = this->vehicles[i]; + assert(v->owner == this->owner); + + this_year += v->GetDisplayProfitThisYear(); + last_year += v->GetDisplayProfitLastYear(); + occupancy += v->trip_occupancy; + } + + const int left = r.left + WD_FRAMERECT_LEFT + 8; + const int right = r.right - WD_FRAMERECT_RIGHT - 8; + + int y = r.top + WD_FRAMERECT_TOP; + DrawString(left, right, y, STR_GROUP_PROFIT_THIS_YEAR, TC_BLACK); + SetDParam(0, this_year); + DrawString(left, right, y, STR_JUST_CURRENCY_LONG, TC_BLACK, SA_RIGHT); + + y += FONT_HEIGHT_NORMAL; + DrawString(left, right, y, STR_GROUP_PROFIT_LAST_YEAR, TC_BLACK); + SetDParam(0, last_year); + DrawString(left, right, y, STR_JUST_CURRENCY_LONG, TC_BLACK, SA_RIGHT); + + y += FONT_HEIGHT_NORMAL; + DrawString(left, right, y, STR_GROUP_OCCUPANCY, TC_BLACK); + if (vehicle_count > 0) { + SetDParam(0, occupancy / vehicle_count); + DrawString(left, right, y, STR_GROUP_OCCUPANCY_VALUE, TC_BLACK, SA_RIGHT); + } + + break; + } + case WID_GL_LIST_GROUP: { int y1 = r.top + WD_FRAMERECT_TOP; int max = min(this->group_sb->GetPosition() + this->group_sb->GetCapacity(), this->groups.Length()); diff --git a/src/hotkeys.cpp b/src/hotkeys.cpp index 8933acb840..137500eaad 100644 --- a/src/hotkeys.cpp +++ b/src/hotkeys.cpp @@ -1,4 +1,4 @@ -/* $Id: hotkeys.cpp 26509 2014-04-25 15:40:32Z rubidium $ */ +/* $Id: hotkeys.cpp 27816 2017-03-20 19:30:49Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -311,7 +311,7 @@ int HotkeyList::CheckMatch(uint16 keycode, bool global_only) const static void SaveLoadHotkeys(bool save) { IniFile *ini = new IniFile(); - ini->LoadFromDisk(_hotkeys_file, BASE_DIR); + ini->LoadFromDisk(_hotkeys_file, NO_DIRECTORY); for (HotkeyList **list = _hotkey_lists->Begin(); list != _hotkey_lists->End(); ++list) { if (save) { diff --git a/src/industry.h b/src/industry.h index 894fd9f716..d41525de96 100644 --- a/src/industry.h +++ b/src/industry.h @@ -1,4 +1,4 @@ -/* $Id: industry.h 24900 2013-01-08 22:46:42Z planetmaker $ */ +/* $Id: industry.h 27929 2017-10-25 15:38:19Z frosch $ */ /* * This file is part of OpenTTD. @@ -66,7 +66,6 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { Date last_cargo_accepted_at; ///< Last day cargo was accepted by this industry byte selected_layout; ///< Which tile layout was used when creating the industry - byte random_triggers; ///< Triggers for the random uint16 random; ///< Random value used for randomisation of all kinds of things PersistentStorage *psa; ///< Persistent storage for NewGRF industries. diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 81c55eb6c8..58ed46a7ea 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: industry_cmd.cpp 27940 2017-12-11 19:24:46Z frosch $ */ +/* $Id: industry_cmd.cpp 27932 2017-11-25 16:50:28Z frosch $ */ /* * This file is part of OpenTTD. diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index b932ec7d85..1d2dc75070 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: industry_gui.cpp 27751 2017-02-26 15:34:15Z alberth $ */ +/* $Id: industry_gui.cpp 27952 2017-12-27 21:54:52Z frosch $ */ /* * This file is part of OpenTTD. @@ -777,37 +777,30 @@ public: y += FONT_HEIGHT_NORMAL; first = false; } + SetDParam(0, CargoSpec::Get(i->accepts_cargo[j])->name); + SetDParam(1, i->accepts_cargo[j]); + SetDParam(2, i->incoming_cargo_waiting[j]); + SetDParamStr(3, ""); + StringID str = STR_NULL; switch (cargo_suffix[j].display) { + case CSD_CARGO_AMOUNT_TEXT: + SetDParamStr(3, cargo_suffix[j].text); + FALLTHROUGH; case CSD_CARGO_AMOUNT: - if (stockpiling) { - SetDParam(0, i->accepts_cargo[j]); - SetDParam(1, i->incoming_cargo_waiting[j]); - DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT); - break; - } - /* FALL THROUGH */ - - case CSD_CARGO: - SetDParam(0, CargoSpec::Get(i->accepts_cargo[j])->name); - DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO); + str = stockpiling ? STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT : STR_INDUSTRY_VIEW_ACCEPT_CARGO; break; case CSD_CARGO_TEXT: - SetDParam(0, CargoSpec::Get(i->accepts_cargo[j])->name); - SetDParamStr(1, cargo_suffix[j].text); - DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT); - break; - - case CSD_CARGO_AMOUNT_TEXT: - SetDParam(0, i->accepts_cargo[j]); - SetDParam(1, i->incoming_cargo_waiting[j]); - SetDParamStr(2, cargo_suffix[j].text); - DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT); + SetDParamStr(3, cargo_suffix[j].text); + FALLTHROUGH; + case CSD_CARGO: + str = STR_INDUSTRY_VIEW_ACCEPT_CARGO; break; default: NOT_REACHED(); } + DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, str); y += FONT_HEIGHT_NORMAL; } diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index d5061d2b3b..aa5a31ea0b 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -11,7 +11,7 @@ ##gender male -# $Id: afrikaans.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: afrikaans.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Maatskappy-besi STR_ABOUT_OPENTTD :{WHITE}Oor OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oorspronklike kopiereg {COPYRIGHT} 1995 Chris Sawyer, Alle regte voorbehou STR_ABOUT_VERSION :{BLACK}OpenTTD uitgawe {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Die OpenTTD span +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Die OpenTTD span # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel @@ -3113,8 +3113,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aanvaar STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Wys lys van aanvaarde vrag STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aanvaar: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Die stasie het eksklusiewe vervoer regte vir die dorp -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} het eksklusiewe vervoer regte in die dorp gekoop. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Die stasie het eksklusiewe vervoer regte vir die dorp +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} het eksklusiewe vervoer regte in die dorp gekoop. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Graderings STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Toon stasie graderings @@ -3361,6 +3361,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Verwyder alle v STR_GROUP_RENAME_CAPTION :{BLACK}Hernoem 'n groep + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nuwe treine STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nuwe Elektries Spoor Voertuie @@ -3525,10 +3526,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomoti STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Koste: {CURRENCY_LONG} Massa: {WEIGHT_SHORT}{}Spoed: {VELOCITY} Krag: {POWER}{}Loopkoste: {CURRENCY_LONG}/jr{}Kapasitiet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Koste: {CURRENCY_LONG} Gewig: {WEIGHT_SHORT}{}Spoed: {VELOCITY} Krag: {POWER} Maks. Treg Krag: {6:FORCE}{}Lopende Koste: {4:CURRENCY_LONG}/jaar{}Kapasitiet: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Koste: {CURRENCY_LONG} Maks. Spoed: {VELOCITY}{}Kapasiteit: {CARGO_LONG}, {CARGO_LONG}{}Lopende Koste: {CURRENCY_LONG}/jaar -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Koste: {CURRENCY_LONG} Maks. Spoed: {VELOCITY}{}Kapasiteit: {CARGO_LONG}{}Lopende Koste: {CURRENCY_LONG}/jaar -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Koste: {CURRENCY_LONG} Max. Spoed: {VELOCITY} Afstand: {COMMA} teëls{}Kapasiteit: {CARGO_LONG}, {CARGO_LONG}{}Hardloop Koste: {CURRENCY_LONG}/jaar -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Koste: {CURRENCY_LONG} Max. Spoed: {VELOCITY} Afstand: {COMMA} teels{}Kapasiteit: {CARGO_LONG}{}Hardloop Koste: {CURRENCY_LONG}/jaar +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Koste: {CURRENCY_LONG} Maks. Spoed: {VELOCITY}{}Kapasiteit: {CARGO_LONG}{}Lopende Koste: {CURRENCY_LONG}/jaar # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Vervang {STRING} - {STRING} @@ -3650,7 +3648,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} ja{P ar STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ja{P ar re} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. spoed: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. spoed: {LTBLUE}{VELOCITY} {BLACK}Afstand: {LTBLUE}{COMMA} teëls STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Gewig: {LTBLUE}{WEIGHT_SHORT} {BLACK}Krag: {LTBLUE}{POWER}{BLACK} Maks. spoed: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Massa: {LTBLUE}{WEIGHT_SHORT} {BLACK}Krag: {LTBLUE}{POWER}{BLACK} Maks. spoed: {LTBLUE}{VELOCITY} {BLACK}Maks. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index cf6a594ad9..51932b50dc 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -10,7 +10,7 @@ ##grflangid 0x14 -# $Id: arabic_egypt.txt 27865 2017-05-03 20:43:22Z frosch $ +# $Id: arabic_egypt.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2320,7 +2320,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :ارض مملو STR_ABOUT_OPENTTD :{WHITE}حول النسخة المفتوحة STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحقوق الاصلية {COPYRIGHT} كريس سوير 1995 , جميع الحقوق محفوظة STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2017 فريق النسخة المفتوحة +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2018 فريق النسخة المفتوحة # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة @@ -2886,6 +2886,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :أزل جميع STR_GROUP_RENAME_CAPTION :{BLACK}إعادة تسمية مجموعة + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :عربات قطار جديدة STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :عربات قطار كهربائية جديدة @@ -3037,8 +3038,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :قاطرة سك STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK} التكلفة: {CURRENCY_LONG} الوزن: {WEIGHT_SHORT}{} السرعة: {VELOCITY} الطاقة: {POWER}{} كلفة التشغيل: {CURRENCY_LONG} / سنة{} السعة: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}التكلفة {CURRENCY_LONG} الوزن {WEIGHT_SHORT}{}السرعة {VELOCITY} Power: {POWER}قوة السحب {6:FORCE}{}التكلفة التشغيلية {4:CURRENCY_LONG}/سنة{}السعة: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK} التكلفة {CURRENCY_LONG} السرعة القصوى {VELOCITY}{}Capacity السعة {CARGO_LONG} {CARGO_LONG}{} كلفة التشغيل {CURRENCY_LONG} / سنة -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK} التكلفة {CURRENCY_LONG} السرعة القصوى {VELOCITY}{} السعة {CARGO_LONG}{} كلفة التشغيل {CURRENCY_LONG} / سنة +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK} التكلفة {CURRENCY_LONG} السرعة القصوى {VELOCITY}{} السعة {CARGO_LONG}{} كلفة التشغيل {CURRENCY_LONG} / سنة # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}تبديل {STRING} - {STRING} diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 4927000891..a9f94057cb 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -10,7 +10,7 @@ ##grflangid 0x21 -# $Id: basque.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: basque.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2592,7 +2592,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Konpainia jabe STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ri buruz STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD bertsioa {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gordetako jokoa @@ -3001,8 +3001,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Onartu STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Onartzen diren zamen zerrenda STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Onartzen da: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Geltoki honek herriko garraio eskubide esklusiboa dauka. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} garraioaren eskubide esklusiboak erosi ditu +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Geltoki honek herriko garraio eskubide esklusiboa dauka. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} garraioaren eskubide esklusiboak erosi ditu STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Zama balorazioak STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Geltokiaren zama balorazioak erakutsi @@ -3245,6 +3245,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Ibilgailu guzti STR_GROUP_RENAME_CAPTION :{BLACK}Taldea berrizendatu + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Tren berriak STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Tren elektriko berriak @@ -3405,10 +3406,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Lokomotora magn STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostea: {CURRENCY_LONG} Pisua: {WEIGHT_SHORT}{}Pisua: {VELOCITY} Potentzia: {POWER}{}Mantenimendua: {CURRENCY_LONG}/urtero{}Edukiera: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kostua: {CURRENCY_LONG} Pisua: {WEIGHT_SHORT}{}Abiadura: {VELOCITY} Potentzia: {POWER} Gehienezko trakzioa: {6:FORCE}{}Mantinemendua: {4:CURRENCY_LONG}/urtero{}Edukiera: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kostea: {CURRENCY_LONG} Gehienezko abiadura: {VELOCITY}{}Edukiera: {CARGO_LONG}, {CARGO_LONG}{}Mantenimendua: {CURRENCY_LONG}/urtero -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kostea: {CURRENCY_LONG} Gehienezko abiadura: {VELOCITY}{}Edukiera: {CARGO_LONG}{}Mantenimendua: {CURRENCY_LONG}/urtero -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostea: {CURRENCY_LONG} Gehienezko abiadura: {VELOCITY} Irismena: {COMMA} tiles{}Edukiera: {CARGO_LONG}, {CARGO_LONG}{}Mantenimendua: {CURRENCY_LONG}/urtero -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kostea: {CURRENCY_LONG} Gehienezko abiadura: {VELOCITY} Irismena: {COMMA} tiles{}Edukiera: {CARGO_LONG}{}Mantenimendua: {CURRENCY_LONG}/urtero +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Kostea: {CURRENCY_LONG} Gehienezko abiadura: {VELOCITY}{}Edukiera: {CARGO_LONG}{}Mantenimendua: {CURRENCY_LONG}/urtero # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Ordezkatu {STRING} - {STRING} @@ -3528,7 +3526,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} urte ({ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} urte ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Gehienezko abiadura: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Gehienezko abiadura: {LTBLUE}{VELOCITY} {BLACK}Irismena: {LTBLUE}{COMMA} lauki STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Pisua: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potentzia: {LTBLUE}{POWER}{BLACK} Gehienezko abiadura: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Pisua: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potentzia: {LTBLUE}{POWER}{BLACK} Gehienezko abiadura: {LTBLUE}{VELOCITY} {BLACK}Gehienezko trakzio indarra: {LTBLUE}{FORCE} diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 44c6c473cf..7b6a90f076 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 27865 2017-05-03 20:43:22Z frosch $ +# $Id: belarusian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -3020,7 +3020,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Зямля на STR_ABOUT_OPENTTD :{WHITE}Аб OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Арыґінальныя аўтарскія правы {COPYRIGHT} 1995 Chris Sawyer. Усе правы абароненыя. STR_ABOUT_VERSION :{BLACK}OpenTTD вэрсія {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–2017 Каманда распрацоўнікаў OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–2018 Каманда распрацоўнікаў OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню @@ -3445,8 +3445,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Прым STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Паказаць сьпіс прымаемых грузаў STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Прымае: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Гэта станцыя мае эксклюзыўныя транспартныя правы ў гэтым населеным пункце. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} набыў эксклюзыўныя транспартныя правы ў гэтым населеным пункце. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Гэта станцыя мае эксклюзыўныя транспартныя правы ў гэтым населеным пункце. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} набыў эксклюзыўныя транспартныя правы ў гэтым населеным пункце. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рэйтынґ STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Паказаць рэйтынґ станцыі @@ -3693,6 +3693,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Выдаліц STR_GROUP_RENAME_CAPTION :{BLACK}Перайменаваць групу + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Новы цягнік STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Новы электрычны цягнік @@ -3869,10 +3870,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.acc :магніта STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Кошт: {CURRENCY_LONG} Вага: {WEIGHT_SHORT}{}Хуткасьць: {VELOCITY} Магутнасьць: {POWER}{}Кошт абслуг.: {CURRENCY_LONG}/год{}Ёмістасьць: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Кошт: {CURRENCY_LONG} Вага: {WEIGHT_SHORT}{}Хуткасьць: {VELOCITY} Магутнасьць: {POWER} Макс. ЦН: {6:FORCE}{}Кошт абслуг.: {4:CURRENCY_LONG}/год{}Ёмістасьць: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Кошт: {CURRENCY_LONG} Макс. хуткасьць: {VELOCITY}{}Ёмістасьць: {CARGO_LONG}, {CARGO_LONG}{}Кошт абслуг.: {CURRENCY_LONG}/год -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Кошт: {CURRENCY_LONG} Макс. хуткасьць: {VELOCITY}{}Ёмістасьць: {CARGO_LONG}{}Кошт абслуг.: {CURRENCY_LONG}/год -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Кошт: {CURRENCY_LONG} Макс. хуткасьць: {VELOCITY} Далёкасьць: {COMMA} клетк{P а i ак}{}Умяшчальнасьць: {CARGO_LONG}, {CARGO_LONG}{}Кошт абслугоўваньня: {CURRENCY_LONG}/год -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Кошт: {CURRENCY_LONG} Макс. хуткасьць: {VELOCITY} Далёкасьць: {COMMA} клет{P ка кi ак}{}Умяшчальнасьць: {CARGO_LONG}{}Кошт абслугоўваньня: {CURRENCY_LONG}/год +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Кошт: {CURRENCY_LONG} Макс. хуткасьць: {VELOCITY}{}Ёмістасьць: {CARGO_LONG}{}Кошт абслуг.: {CURRENCY_LONG}/год # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Замена {STRING.gen} — {STRING} @@ -4002,7 +4000,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} г{P о STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} г{P од ады адоў} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. хуткасьць: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс. хуткасьць: {LTBLUE}{VELOCITY} {BLACK}Далёкасьць: {LTBLUE}{COMMA} клетк{P а i ак} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Магутнасьць: {LTBLUE}{POWER}{BLACK} Макс. хуткасьць: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Магутнасьць: {LTBLUE}{POWER}{BLACK} Макс. хуткасьць: {LTBLUE}{VELOCITY} {BLACK}Макс. ЦН: {LTBLUE}{FORCE} diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index e7c7b9648f..0f9bb81197 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -11,7 +11,7 @@ ##gender m f -# $Id: brazilian_portuguese.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: brazilian_portuguese.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desligado STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Mover a tela com o botão esquerdo: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Ativa rolamento do mapa por clique e arraste com o botão esquerdo. Especialmente útil ao usar um touchscreen para o rolamento +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fechar janela com botão direito do mouse: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fecha uma janela ao clicar com o botão direito do mouse nela. Desativa o tooltip com o botão direito! STR_CONFIG_SETTING_AUTOSAVE :Auto-salvar: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecione intervalo entre jogos salvos automaticamente @@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :O terreno é pr STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD... STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 A equipe do OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 A equipe do OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo @@ -3115,8 +3117,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aceita STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Exibir lista de carga aceita STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aceita: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Essa estação tem direitos de transporte exclusivos nessa cidade. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} adquiriu direitos exclusivos de transporte nessa cidade. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Essa estação tem direitos de transporte exclusivos nessa cidade. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} adquiriu direitos exclusivos de transporte nessa cidade. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Avaliações STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Exibir avaliações da estação @@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requer: STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}aguardando -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} aguardando{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING} @@ -3368,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos o STR_GROUP_RENAME_CAPTION :{BLACK}Renomear um grupo +STR_GROUP_PROFIT_THIS_YEAR :Lucros deste ano: +STR_GROUP_PROFIT_LAST_YEAR :Lucros do ano passado: +STR_GROUP_OCCUPANCY :Uso atual: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novos Veículos Ferroviários STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nova Locomotiva Elétrica @@ -3399,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Todos as cargas STR_PURCHASE_INFO_ALL_BUT :Todas menos {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Tração máx : {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} quadrados +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de trens - clique num trem para informações. Cltr+Clique para alterar a visibilidade do tipo de trem STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de automóveis - clique num automóvel para informações. Cltr+Clique para alterar a visibilidade do tipo de automóvel @@ -3532,10 +3538,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotiva magl STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Preço: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potência: {POWER}{}Custo de manutenção: {CURRENCY_LONG}/ano{}Capacidade: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Preço: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Vel.: {VELOCITY} Potência: {POWER} Tração Máx: {6:FORCE}{}Custo de manutenção: {4:CURRENCY_LONG}/yr{}Capacidade: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Preço: {CURRENCY_LONG} Vel. Max.: {VELOCITY}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de manutenção: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Preço: {CURRENCY_LONG} Vel. Max.: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo de manuteção: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Preço: {CURRENCY_LONG} Vel. Máx.: {VELOCITY} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Cust de manut.: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel. Máx.: {VELOCITY} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}{}Custo de manut.: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Preço: {CURRENCY_LONG} Vel. Max.: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo de manuteção: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel Máx.: {VELOCITY}{}Tipo de aeronave: {STRING}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de oper.: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel Máx.: {VELOCITY}{}Tipo de aeronave: {STRING}{}Capacidade: {CARGO_LONG}{}Custo de oper.: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel. Máx.: {VELOCITY}{}Tipo de aeronave: {STRING} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de oper.: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel. Máx.: {VELOCITY}{}Tipo de aeronave: {STRING} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}{}Custo de oper.: {CURRENCY_LONG}/ano # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituir {STRING} - {STRING} @@ -3658,7 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} ano{P " STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ano{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade Max: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{G=f}{BLACK}Vel. máx.: {LTBLUE}{VELOCITY} {BLACK}Alcance: {LTBLUE}{COMMA} quadrados +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Vel. Máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Vel. Máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} {BLACK}Alcance: {LTBLUE}{COMMA} quadrados STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Força: {LTBLUE}{POWER}{BLACK} Velocidade Max: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Força: {LTBLUE}{POWER}{BLACK} Velocidade Max: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 45da501b9a..4038a713ad 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -12,7 +12,7 @@ ##case m f n p -# $Id: bulgarian.txt 27865 2017-05-03 20:43:22Z frosch $ +# $Id: bulgarian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2626,7 +2626,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земя, пр STR_ABOUT_OPENTTD :{WHITE}Относно OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторски права {COPYRIGHT} 1995 Крис Сойер (Chris Sawyer), Всички права са запазени STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта @@ -3035,8 +3035,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Прие STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Покажи списък с приетите товари STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Приема: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Тази станция има специални транспортни привилегии за града -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} закупи специални транспортни привилегии за града. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Тази станция има специални транспортни привилегии за града +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} закупи специални транспортни привилегии за града. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинги STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Покажи нивото на обслужване @@ -3280,6 +3280,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Премахн STR_GROUP_RENAME_CAPTION :{BLACK}Преименовай група + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Нови Машини за Двурелсов път STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Нови електрически влакове @@ -3444,10 +3445,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :локомот STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Цена: {CURRENCY_LONG} Тегло: {WEIGHT_SHORT}{}Скорост: {VELOCITY} Мощност: {POWER}{}Разход: {CURRENCY_LONG}/г.{}Капацитет: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Цена: {CURRENCY_LONG} Тегло: {WEIGHT_SHORT}{}Скорост: {VELOCITY} Мощност: {POWER} Макс. Т.С.: {6:FORCE}{}Експлоатационни разходи: {4:CURRENCY_LONG}/год.{}Вместимост: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. Скорост: {VELOCITY}{}Вместимост: {CARGO_LONG}, {CARGO_LONG}{}Експлоатационни разходи: {CURRENCY_LONG}/год. -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. Скорост: {VELOCITY}{}Вместимост: {CARGO_LONG}{}Експлоатационни разходи: {CURRENCY_LONG}/год. -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Цена: {CURRENCY_LONG} Макс. Скорост: {VELOCITY} Обхват: {COMMA} полета{}Капацитет: {CARGO_LONG}, {CARGO_LONG}{}Транспортни разходи: {CURRENCY_LONG}/година -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. Скорост: {VELOCITY} Обхват: {COMMA} полета{}Капацитет: {CARGO_LONG}{}Транспортни разходи: {CURRENCY_LONG}/година +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. Скорост: {VELOCITY}{}Вместимост: {CARGO_LONG}{}Експлоатационни разходи: {CURRENCY_LONG}/год. # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Замяна {STRING} - {STRING} @@ -3569,7 +3567,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} год STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} годин{P а и} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. скорост: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс. скорост: {LTBLUE}{VELOCITY} {BLACK}Обхват: {LTBLUE}{COMMA} полета STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Тегло: {LTBLUE}{WEIGHT_SHORT} {BLACK}Мощност: {LTBLUE}{POWER}{BLACK} Макс. Скорост: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Тегло: {LTBLUE}{WEIGHT_SHORT} {BLACK}Мощност: {LTBLUE}{POWER}{BLACK} Макс. Скорост: {LTBLUE}{VELOCITY} {BLACK}Макс. Т.С.: {LTBLUE}{FORCE} diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 8ce638f73a..8942f19919 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -11,7 +11,7 @@ ##gender Masculin Femenin -# $Id: catalan.txt 27865 2017-05-03 20:43:22Z frosch $ +# $Id: catalan.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desactivat STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Desplaçament amb el botó esquerre: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activa el desplaçament del mapa arrossegant-lo amb el botó esquerre del ratolí. Això és especialment útil quan s'utilitzen pantalles tàctils +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Tanca la finestra amb un clic dret del ratolí: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Tanca una finestra fent-hi un clic amb el botó dret del ratolí. Aquesta opció desactiva els indicadors de funció amb el mateix botó. STR_CONFIG_SETTING_AUTOSAVE :Desada automàtica: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecciona l'interval entre desades automàtiques de les partides. @@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :terreny propiet STR_ABOUT_OPENTTD :{WHITE}Quant a l'OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer. Tots els drets reservats. STR_ABOUT_VERSION :{BLACK}Versió {REV} de l'OpenTTD -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 L'equip de l'OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 L'equip de l'OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Desa la Partida @@ -3115,8 +3117,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepta STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostra la llista de càrregues admeses STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accepta: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Aquesta estació té els drets exclusius de transport en aquesta ciutat. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ha comprat els drets exclusius de transport en aquesta ciutat. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Aquesta estació té els drets exclusius de transport en aquesta ciutat. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ha comprat els drets exclusius de transport en aquesta ciutat. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratis STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostra els ratis de l'estació @@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necessit STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Necessita: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}esperant -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperant{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produeix: {YELLOW}{STRING}{STRING} @@ -3368,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Treu tots els v STR_GROUP_RENAME_CAPTION :{BLACK}Canvia de nom el grup +STR_GROUP_PROFIT_THIS_YEAR :Benefici d'enguany: +STR_GROUP_PROFIT_LAST_YEAR :Benefici de l'any passat: +STR_GROUP_OCCUPANCY :Ocupació actual: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Compra de nous vehicles ferroviaris STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Compra de nous vehicles ferroviaris per vies electrificades @@ -3399,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Totes les càrr STR_PURCHASE_INFO_ALL_BUT :Qualsevol excepte {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Esforç de tracció màxim: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Abast: {GOLD}{COMMA} cel·les +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipus d'aeronau: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Llista de selecció de trens i vagons. Clica al vehicle per més informació. Ctrl+Click per a alternar entre mostrar/ocultar el vehicle ferroviari STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Llista de models de vehicles de carretera. Clica sobre el model per més informació. Amb Ctrl+Clic, commuta entre mostrar o ocultar el model. @@ -3532,10 +3538,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=Femenin}loco STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost: {CURRENCY_LONG} Pes: {WEIGHT_SHORT}{}Velocitat: {VELOCITY} Potència: {POWER}{}Cost de circulació: {CURRENCY_LONG}/any{}Capacitat: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cost: {CURRENCY_LONG} Pes: {WEIGHT_SHORT}{}Velocitat: {VELOCITY} Potència: {POWER} Màx. E.T.: {6:FORCE}{}Cost d'utilització: {4:CURRENCY_LONG}/any{}Capacitat: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Vel. Màx: {VELOCITY}{}Capacitat: {CARGO_LONG}, {CARGO_LONG}{}Cost d'utilització: {CURRENCY_LONG}/any -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Vel. Màx: {VELOCITY}{}Capacitat: {CARGO_LONG}{}Cost d'utilització: {CURRENCY_LONG}/any -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cost: {CURRENCY_LONG} Vel. màx.: {VELOCITY} Abast: {COMMA} cel·les{}Capacitat: {CARGO_LONG}, {CARGO_LONG}{}Cost d'utilització: {CURRENCY_LONG}/any -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Vel. màx.: {VELOCITY} Abast: {COMMA} cel·les{}Capacitat: {CARGO_LONG}{}Cost d'utilització: {CURRENCY_LONG}/any +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Vel. Màx: {VELOCITY}{}Capacitat: {CARGO_LONG}{}Cost d'utilització: {CURRENCY_LONG}/any +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Velocitat màx.: {VELOCITY}{}Tipus d'aeronau: {STRING}{}Capacitat: {CARGO_LONG}, {CARGO_LONG}{}Cost de circulació: {CURRENCY_LONG} per any +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Velocitat màx.: {VELOCITY}{}Tipus d'aeronau: {STRING}{}Capacitat: {CARGO_LONG}{}Cost de circulació: {CURRENCY_LONG} per any +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Velocitat màx.: {VELOCITY}{}Tipus d'aeronau: {STRING} Abast: {COMMA} caselles{}Capacitat: {CARGO_LONG}, {CARGO_LONG}{}Cost de circulació: {CURRENCY_LONG} per any +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Velocitat màx.: {VELOCITY}{}Tipus d'aeronau: {STRING} Abast: {COMMA} caselles{}Capacitat: {CARGO_LONG}{}Cost de circulació: {CURRENCY_LONG} per any # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Substitueix {STRING} - {STRING} @@ -3658,7 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} any{P " STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} any{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Vel. màx.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Vel. màx: {LTBLUE}{VELOCITY} {BLACK}Abast: {LTBLUE}{COMMA} cel·les +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Velocitat màx.: {LTBLUE}{VELOCITY} {BLACK}Tipus d'aeronau: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Velocitat màx.: {LTBLUE}{VELOCITY} {BLACK}Tipus d'aeronau: {LTBLUE}{STRING} {BLACK}Abast: {LTBLUE}{COMMA} caselles STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Pes: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potència: {LTBLUE}{POWER}{BLACK} Vel. Màx: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Pes: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potència: {LTBLUE}{POWER}{BLACK} Vel. màx: {LTBLUE}{VELOCITY} {BLACK}E.T. màx.: {LTBLUE}{FORCE} diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 9373dfc0bc..688156a3fa 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 27941 2017-12-11 19:50:30Z frosch $ +# $Id: croatian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1468,6 +1468,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Isključeno STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Skrolanje lijevim klikom: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Uključi pomicanje karte povlačenjem pomoću lijevog gumba miša. Ovo je posebno korisno kada se koristi zaslon osjetljiv na dodir +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zatvori prozor nakon desnog klika: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zatvara prozor nakon desnog klika unutar prozora. S desnim klikom zatvaraju se i upute alata! STR_CONFIG_SETTING_AUTOSAVE :Automatsko snimanje: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Odaberite interval između automatskog snimanja igre @@ -2785,7 +2787,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemlja u posjed STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Izvorno autorsko pravo {COPYRIGHT} 1995 Chris Sawyer, sva prava pridržana STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD tim +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD tim # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru @@ -3210,8 +3212,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Prihvać STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Pokaži popis tereta koji se prihvaća STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Prihvaća: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ova stanica ima ekskluzivna prava trasnporta u ovom gradu. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kupljena ekskluzivna prava transporta u ovom gradu. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ova stanica ima ekskluzivna prava trasnporta u ovom gradu. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kupljena ekskluzivna prava transporta u ovom gradu. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ocjene STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Pokaži ocjene postaje @@ -3390,11 +3392,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Treba: { STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Treba -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}čeka -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Treba: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} čeka{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING} @@ -3463,6 +3463,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Ukloni sva vozi STR_GROUP_RENAME_CAPTION :{BLACK}Preimenuj grupu +STR_GROUP_PROFIT_THIS_YEAR :Dobit ove godine: +STR_GROUP_PROFIT_LAST_YEAR :Dobit prošle godine: +STR_GROUP_OCCUPANCY :Trenutna uporaba: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nova željeznička vozila STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nova električna pružna vozila @@ -3494,6 +3499,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Sve vrste teret STR_PURCHASE_INFO_ALL_BUT :Sve osim {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK} Najveća vučna sila: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Domet: {GOLD}{COMMA} polja +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Vrsta zrakoplova: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Popis vlakova za odabir. Klikni na vozilo za informacije. Ctrl+klik za uključivanje ili isključivanje prikaza vrste vozila STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Popis cestovnih vozila za odabir. Klikni na vozilo za informacije. Ctrl+klik za uključivanje ili isključivanje prikaza vrste cestovnog vozila @@ -3627,10 +3633,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomoti STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cijena: {CURRENCY_LONG} Težina: {WEIGHT_SHORT}{}Brzina: {VELOCITY} Snaga: {POWER}{}Trošak uporabe: {CURRENCY_LONG}/god{}Kapacitet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Trošak: {CURRENCY_LONG} Težina: {WEIGHT_SHORT}{}Brzina: {VELOCITY} Snaga: {POWER} Maks. T.E.: {6:FORCE}{}Trošak uporabe: {4:CURRENCY_LONG}/god{}Nosivost: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Trošak: {CURRENCY_LONG} Maks. brzina: {VELOCITY}{}Nosivost: {CARGO_LONG}, {CARGO_LONG}{}Trošak uporabe: {CURRENCY_LONG}/god -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Trošak: {CURRENCY_LONG} Maks. brzina: {VELOCITY}{}Nosivost: {CARGO_LONG}{}Trošak uporabe: {CURRENCY_LONG}/god -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cijena: {CURRENCY_LONG} Maks. brzina: {VELOCITY} Domet: {COMMA} tiles{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Trošak vožnje: {CURRENCY_LONG}/god -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cijena: {CURRENCY_LONG} Maks. Brzina: {VELOCITY} Domet: {COMMA} tiles{}Kapacitet: {CARGO_LONG}{}Trošak vožnje: {CURRENCY_LONG}/god +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Trošak: {CURRENCY_LONG} Maks. brzina: {VELOCITY}{}Nosivost: {CARGO_LONG}{}Trošak uporabe: {CURRENCY_LONG}/god +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Trošak: {CURRENCY_LONG} Maks. brzina: {VELOCITY}{}Vrsta zrakoplova: {STRING}{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Trošak uporabe: {CURRENCY_LONG}/god +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Trošak: {CURRENCY_LONG} Maks. brzina: {VELOCITY}{}Vrsta zrakoplova: {STRING}{}Kapacitet: {CARGO_LONG}{}Trošak uporabe: {CURRENCY_LONG}/god +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Trošak: {CURRENCY_LONG} Maks. brzina: {VELOCITY}{}Vrsta zrakoplova: {STRING} Doseg: {COMMA} polja{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Trošak uporabe: {CURRENCY_LONG}/god +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Trošak: {CURRENCY_LONG} Maks. brzina: {VELOCITY}{}Vrsta zrakoplova: {STRING} Doseg: {COMMA} polja{}Kapacitet: {CARGO_LONG}{}Trošak uporabe: {CURRENCY_LONG}/god # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Zamijeni {STRING} - {STRING} @@ -3753,7 +3760,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} godin{P STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} godin{P a e a} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Najveća brzina: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Najveća brzina: {LTBLUE}{VELOCITY} {BLACK}Domet: {LTBLUE}{COMMA} polj{P e a a} +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maks. brzina: {LTBLUE}{VELOCITY} {BLACK}Vrsta zrakoplova: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Maks. brzina: {LTBLUE}{VELOCITY} {BLACK}Vrsta zrakoplova: {LTBLUE}{STRING} {BLACK}Doseg: {LTBLUE}{COMMA} polja STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Najveća brzina: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Najveća brzina: {LTBLUE}{VELOCITY} {BLACK}Najveća vučna sila: {LTBLUE}{FORCE} diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 25e8b0424f..582d67f0cc 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 27941 2017-12-11 19:50:30Z frosch $ +# $Id: czech.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1459,6 +1459,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :vypnutá STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Posouvání levým tlačítkem: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Povolit posouvání mapy chycením pomocí levého tlačítka myši. Toto je velmi užitečné hlavně při použití s dotykovou obrazovkou. +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zavírat okno kliknutím pravým tlačítkem myši: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zavírat okno kliknutím pravým tlačítkem na něj. Znemožňuje využívat nápovědu zobrazující se při stisknutí pravého tlačítka myši! STR_CONFIG_SETTING_AUTOSAVE :Automaticky ukládat: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Zvol frekvenci automatického ukládání @@ -2782,7 +2784,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Půda vlastněn STR_ABOUT_OPENTTD :{WHITE}O OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Původní copyright: {COPYRIGHT} 1995 Chris Sawyer, všechna práva vyhrazena STR_ABOUT_VERSION :{BLACK}OpenTTD verze {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Tým OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Tým OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru @@ -3207,8 +3209,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Přijím STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Ukázat seznam přijímaného nákladu STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Přijímá: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tato stanice má v tomto městě výhradní přepravní práva. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Společnost {YELLOW}{COMPANY}{BLACK} koupila v tomto městě výhradní přepravní práva. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tato stanice má v tomto městě výhradní přepravní práva. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Společnost {YELLOW}{COMPANY}{BLACK} koupila v tomto městě výhradní přepravní práva. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Hodnocení STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Ukázat hodnocení společností @@ -3387,11 +3389,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vyžaduj STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vyžaduje -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}ček{P á ají á} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vyžaduje: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} ček{P á ají á}{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING} @@ -3460,6 +3460,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Odstranit všec STR_GROUP_RENAME_CAPTION :{BLACK}Přejmenovat skupinu +STR_GROUP_PROFIT_THIS_YEAR :Letošní zisk: +STR_GROUP_PROFIT_LAST_YEAR :Loňský zisk: +STR_GROUP_OCCUPANCY :Současné využití: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nové lokomotivy a vagony STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nové elektrické lokomotivy a vagony @@ -3491,6 +3496,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Všechny druhy STR_PURCHASE_INFO_ALL_BUT :Všechny kromě {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. tažná síla: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Dosah: {GOLD}{COMMA} polí +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Typ letadla: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Seznam vlaků - pro informace klikni na vlak. Ctrl+kliknutí způsobí přepínání skrytí typů lokomotiv a vagónů. STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Seznam silničních vozidel - klikni na vozidlo pro informace. Ctrl+kliknutí způsobí přepínání skrytí typu silničního vozidla. @@ -3627,10 +3633,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.acc :lokomotivu Magl STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Hmotnost: {WEIGHT_SHORT}{}Rychlost: {VELOCITY} Výkon: {POWER}{}Cena provozu: {CURRENCY_LONG} ročně{}Kapacita: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Váha: {WEIGHT_SHORT}{}Rychlost: {VELOCITY} Síla: {POWER} Maximální tažná síla: {6:FORCE}{}Provozní náklady: {4:CURRENCY_LONG}/rok{}Kapacita: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rychlost: {VELOCITY}{}Kapacita: {CARGO_LONG}, {CARGO_LONG}{}Cena provozu: {CURRENCY_LONG} ročně -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rychlost: {VELOCITY}{}Kapacita: {CARGO_LONG}{}Cena provozu: {CURRENCY_LONG} ročně -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cena {CURRENCY_LONG} Max. Rychlost: {VELOCITY} Dosah: {COMMA} polí{}Kapacita: {CARGO_LONG}, {CARGO_LONG}{}Provozní náklady: {CURRENCY_LONG}/rok -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cena {CURRENCY_LONG} Max. Rychlost {VELOCITY} Dosah: {COMMA} polí{}Kapacita: {CARGO_LONG}{}Provozní náklady: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rychlost: {VELOCITY}{}Kapacita: {CARGO_LONG}{}Cena provozu: {CURRENCY_LONG} ročně +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rychlost: {VELOCITY}{}Typ letadla: {STRING}{}Kapacita: {CARGO_LONG}, {CARGO_LONG}{}Provozní náklady: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rychlost: {VELOCITY}{}Typ letadla: {STRING}{}Kapacita: {CARGO_LONG}{}Provozní náklady: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rychlost: {VELOCITY}{}Typ letadla: {STRING} Dosah: {COMMA} políč{P ko ka ek}{}Kapacita: {CARGO_LONG}, {CARGO_LONG}{}Provozní náklady: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rychlost: {VELOCITY}{}Typ letadla: {STRING} Dosah: {COMMA} políč{P ko ka ek}{}Kapacita: {CARGO_LONG}{}Provozní náklady: {CURRENCY_LONG}/rok # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Vyměňování {STRING} - {STRING} @@ -3753,7 +3760,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} {P rok STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P rok roky let} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY} {BLACK}Dosah: {LTBLUE}{COMMA} polí +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY} {BLACK}Typ letadla: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. rychlost: {LTBLUE}{VELOCITY} {BLACK}Typ letadla: {LTBLUE}{STRING} {BLACK}Dosah: {LTBLUE}{COMMA} políč{P ko ka ek} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Hmotnost: {LTBLUE}{WEIGHT_SHORT} {BLACK}Výkon: {LTBLUE}{POWER}{BLACK} Max. rychlost: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Hmotnost: {LTBLUE}{WEIGHT_SHORT} {BLACK}Výkon: {LTBLUE}{POWER}{BLACK} Max. rychlost: {LTBLUE}{VELOCITY} {BLACK}Max. tažná síla: {LTBLUE}{FORCE} diff --git a/src/lang/danish.txt b/src/lang/danish.txt index d1f11d2fba..e24a78355f 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -10,7 +10,7 @@ ##grflangid 0x2d -# $Id: danish.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: danish.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Fra STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstreklik-scrolling: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Aktiver rulle kortet ved at trække den med venstre museknap. Dette er især nyttigt, når du bruger en touch-screen til at rulle +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Luk vindue ved højre-klik: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Lukker vinduet ved at højreklikke inde i det. Deaktiverer værktøjstip ved at højreklikke! STR_CONFIG_SETTING_AUTOSAVE :Auto gem: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vælg interval mellem automatisk gemte spil @@ -1761,6 +1763,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tjek for STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vis computerspiller/spilscript indstillinger STR_INTRO_TOOLTIP_QUIT :{BLACK}Afslut 'OpenTTD' +STR_INTRO_BASESET :{BLACK} Det aktuelt valgte base grafiksæt mangler {NUM} sprite {P "" s}. Se venligst efter opdateringer til basesættet. STR_INTRO_TRANSLATION :{BLACK}Denne oversættelse mangler {NUM} streng{P "" e}. Hjælp venligst med at gøre OpenTTD bedre ved at tilmelde dig som oversætter. Se readme.txt for detaljer. # Quit window @@ -2589,6 +2592,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Lufthavn STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) +STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tog type: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Togspors hastighedsgrænse: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Vej hastighedsbegrænsning: {LTBLUE}{VELOCITY} @@ -2604,13 +2608,13 @@ STR_LAI_CLEAR_DESCRIPTION_DESERT :Ørken STR_LAI_RAIL_DESCRIPTION_TRACK :Jernbane spor STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Jernbane spor med bloksignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Jernbane spor med with pre-signaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Jernbane spor med udgangssignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Jernbane spor med udgangs-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Jernbane spor med kombinerede signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Jernbane spor med rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Jernbane spor med en-vejs-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Jernbane spor med blok- og pre-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Jernbane spor med blok- og udgangs-signaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Jernbane spor med blok og kombinerede signaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Jernbane spor med blok- og kombinerede signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Jernbane spor med blok- og rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Jernbane spor med blok og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Jernbane spor med pre- og udgangs-signaler @@ -2621,7 +2625,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Jernbane spor m STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Jernbane spor med udgangs- og rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Jernbane spor med udgangs- og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Jernbane spor med kombinerede og rute-signaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Jernbane spor med kombinerede og en-vejs rute-signaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Jernbane spor med kombinationede- og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Jernbane spor med rute- og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Jernbane togdepot @@ -2687,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land ejet af se STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheder reserveret STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil @@ -3112,8 +3116,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepter STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Vis liste over accepteret last STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accepterer: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK} Denne station har eksklusive transport rettigheder i denne by. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW} {COMPANY} {BLACK} købte eksklusive transport rettigheder i denne by. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK} Denne station har eksklusive transport rettigheder i denne by. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW} {COMPANY} {BLACK} købte eksklusive transport rettigheder i denne by. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Bedømmelse STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vis stationens bedømmelse @@ -3292,6 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Kræver: STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Kræver: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} venter{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Producerer: {YELLOW}{STRING}{STRING} @@ -3360,6 +3367,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle kør STR_GROUP_RENAME_CAPTION :{BLACK}Omdøb en gruppe +STR_GROUP_PROFIT_THIS_YEAR :Afkast i år: +STR_GROUP_PROFIT_LAST_YEAR :Afkast sidste år: +STR_GROUP_OCCUPANCY :Nuværende brug: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nye jernbanekøretøjer STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nyt elektrisk lokomotiv @@ -3391,6 +3403,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Alle lasttyper STR_PURCHASE_INFO_ALL_BUT :Alle undtagen {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. trækkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rækkevidde: {GOLD}{COMMA} felter +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Fly type: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Togvalgsliste - klik på et køretøj for mere information STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liste over køretøjstyper - klik på køretøj for information @@ -3524,10 +3537,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnetskinnelok STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Pris: {CURRENCY_LONG} Vægt: {WEIGHT_SHORT}{}Hastighed: {VELOCITY} Styrke: {POWER}{}Driftsomkostninger: {CURRENCY_LONG}/år{}Kapacitet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Pris: {CURRENCY_LONG} Vægt: {WEIGHT_SHORT}{}Hastighed: {VELOCITY} Hestekræfter: {POWER} Maks. Trækkraft: {6:FORCE}{}Driftsomkostning: {4:CURRENCY_LONG}/år{}Kapacitet: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hast.: {VELOCITY}{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Driftsomkostninger: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hast.: {VELOCITY}{}Kapacitet: {CARGO_LONG}{}Driftsomkostninger: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Pris: {CURRENCY_LONG} Max. hastighed: {VELOCITY} Rækkevidde: {COMMA} felter{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Faste udgifter: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. hastighed: {VELOCITY} Rækkevidde: {COMMA} felter{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hast.: {VELOCITY}{}Kapacitet: {CARGO_LONG}{}Driftsomkostninger: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed: {VELOCITY}{}Aircraft type: {STRING}{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed: {VELOCITY}{}Fly type: {STRING}{}Kapacitet: {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed: {VELOCITY}{}Fly type: {STRING} Rækkevidde: {COMMA} felter{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed{VELOCITY}{}Fly type: {STRING} Rækkevidde: {COMMA} felter{}Kapacitet: {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Udskift {STRING} - {STRING} @@ -3557,6 +3571,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryk for STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift imellem lokomotiv- og vognudskiftningsvindue STR_REPLACE_ENGINES :Lokomotiver STR_REPLACE_WAGONS :Vogne +STR_REPLACE_ALL_RAILTYPE :Alle jernbanevogne STR_REPLACE_HELP_RAILTYPE :{BLACK}Vælg den skinne type, du ønsker at udskifte lokomotiver til STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Viser hvilket køretøj det valgte køretøj til venstre bliver udskiftet med, hvis det udskiftes @@ -3649,7 +3664,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} år ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. hast.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. hastighed: {LTBLUE}{VELOCITY} {BLACK}Rækkevidde: {LTBLUE}{COMMA} felter +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. hastighed: {LTBLUE}{VELOCITY} {BLACK}Fly type: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. hastighed: {LTBLUE}{VELOCITY} {BLACK}Fly type: {LTBLUE}{STRING} {BLACK}Rækkevidde: {LTBLUE}{COMMA} felter STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vægt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Effekt: {LTBLUE}{POWER}{BLACK} Maks. hast.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vægt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Effekt: {LTBLUE}{POWER}{BLACK} Maks. hast.: {LTBLUE}{VELOCITY} {BLACK}Maks. trækkraft: {LTBLUE}{FORCE} diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 58ae20ab8a..a9f366522e 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -10,7 +10,7 @@ ##grflangid 0x1f -# $Id: dutch.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: dutch.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Uit STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrollen met linkermuisknop: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Schakel scrollen met de linkermuisknop in door te slepen. Dit is vooral handig bij het gebruik van een touchscreen voor scrollen +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Sluit window met rechts-klik: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Sluit een venster door met de rechtermuisknop erin te klikken. Schakelt de tooltip uit met de rechtermuisknop! STR_CONFIG_SETTING_AUTOSAVE :Automatisch opslaan: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Kies interval tussen automatische spelopslag @@ -2689,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrein in bedr STR_ABOUT_OPENTTD :{WHITE}Over OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originele copyright {COPYRIGHT} 1995 Chris Sawyer, alle rechten voorbehouden STR_ABOUT_VERSION :{BLACK}OpenTTD versie {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Het OpenTTD-team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Het OpenTTD-team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spel Opslaan @@ -3114,8 +3116,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acceptee STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Laat lijst van gevraagde goederen zien STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accepteert: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Dit station heeft exclusieve transportrechten in deze gemeente. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kocht exclusieve transportrechten in deze gemeente +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Dit station heeft exclusieve transportrechten in deze gemeente. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kocht exclusieve transportrechten in deze gemeente STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Rangen STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Bekijk stationsreputaties @@ -3294,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vereist: STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vereist: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vereist -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}wachtend -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vereist: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} wachtend{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produceert: {YELLOW}{STRING}{STRING} @@ -3367,6 +3367,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Verwijder alle STR_GROUP_RENAME_CAPTION :{BLACK}Hernoem een groep +STR_GROUP_PROFIT_THIS_YEAR :Winst dit jaar: +STR_GROUP_PROFIT_LAST_YEAR :Winst vorig jaar: +STR_GROUP_OCCUPANCY :Huidig gebruik: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nieuwe spoorvoertuigen STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nieuwe elektrische spoorvoertuigen @@ -3398,6 +3403,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Alle vrachttype STR_PURCHASE_INFO_ALL_BUT :Alles behalve {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. trekkracht: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Bereik: {GOLD}{COMMA} tegels +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Vliegtuig type: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Spoorvoertuigkeuzelijst. Klik op een spoorvoertuig voor informatie. Ctrl+klik voor het aan/uitzetten van het verbergen van het voertuigtype STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wegvoertuigkeuzelijst. Klik op een wegvoertuig voor informatie. Ctrl+klik om het verbergen van het voertuigtype aan/uit te zetten. @@ -3531,10 +3537,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :zweeflocomotief STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Prijs: {CURRENCY_LONG} Gewicht: {WEIGHT_SHORT}{}Snelheid: {VELOCITY} Kracht: {POWER}{}Brandstofprijs: {CURRENCY_LONG}/jr{}Capaciteit: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Prijs: {CURRENCY_LONG} Gewicht: {WEIGHT_SHORT}{}Snelheid: {VELOCITY} Kracht: {POWER} Max. T.E.: {6:FORCE}{}Bedrijfskosten: {4:CURRENCY_LONG}/yr{}Capaciteit: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Max. Snelheid: {VELOCITY}{}Capaciteit: {CARGO_LONG}, {CARGO_LONG}{}Gebruikskosten: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Max. Snelheid: {VELOCITY}{}Capaciteit: {CARGO_LONG}{}Gebruikskosten: {CURRENCY_LONG}/jaar -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kosten: {CURRENCY_LONG} Max. Snelheid: {VELOCITY} Bereik: {COMMA} tegels{}Capaciteit: {CARGO_LONG}, {CARGO_LONG}{}Bedrijfskosten: {CURRENCY_LONG}/jr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Max. Snelheid: {VELOCITY} Bereik: {COMMA} tegels{}Capaciteit: {CARGO_LONG}{}Bedrijfskosten: {CURRENCY_LONG}/jr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Max. Snelheid: {VELOCITY}{}Capaciteit: {CARGO_LONG}{}Gebruikskosten: {CURRENCY_LONG}/jaar +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Prijs: {CURRENCY_LONG} Max. Snelheid: {VELOCITY}{}Vliegtuig type: {STRING}{}Capaciteit: {CARGO_LONG}, {CARGO_LONG}{}Gebruikskosten: {CURRENCY_LONG}/jaar +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Prijs: {CURRENCY_LONG} Max. Snelheid: {VELOCITY}{}Vliegtuig type: {STRING}{}Capaciteit: {CARGO_LONG}{}Gebruikskosten: {CURRENCY_LONG}/jaar +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Prijs: {CURRENCY_LONG} Max. Snelheid: {VELOCITY}{}Vliegtuig type: {STRING} Bereik: {COMMA} tiles{}Capaciteit: {CARGO_LONG}, {CARGO_LONG}{}Gebruikskosten: {CURRENCY_LONG}/jaar +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Prijs: {CURRENCY_LONG} Max. Snelheid: {VELOCITY}{}Vliegtuig type: {STRING} Bereik: {COMMA} tiles{}Capaciteit: {CARGO_LONG}{}Gebruikskosten: {CURRENCY_LONG}/jaar # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Vervang {STRING} - {STRING} @@ -3657,7 +3664,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} ja{P ar STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ja{P ar ren} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. snelheid: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. snelheid: {LTBLUE}{VELOCITY} {BLACK}Bereik: {LTBLUE}{COMMA} tegels +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. snelheid: {LTBLUE}{VELOCITY} {BLACK}Vliegtuig type: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. snelheid: {LTBLUE}{VELOCITY} {BLACK}Vliegtuig type: {LTBLUE}{STRING} {BLACK}Bereik: {LTBLUE}{COMMA} tegels STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Gewicht: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kracht: {LTBLUE}{POWER}{BLACK} Max. snelheid: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Gewicht: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kracht: {LTBLUE}{POWER}{BLACK} Max. snelheid: {LTBLUE}{VELOCITY} {BLACK}Max. T.K.: {LTBLUE}{FORCE} diff --git a/src/lang/english.txt b/src/lang/english.txt index f63bffa453..fe7836877a 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -10,7 +10,7 @@ ##grflangid 0x01 -# $Id: english.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: english.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Off STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Left-click scrolling: {STRING2} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Enable scrolling the map by dragging it with the left mouse button. This is especially useful when using a touch-screen for scrolling +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Close window on right-click: {STRING2} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Closes a window by right-clicking inside it. Disables the tooltip on right-click! STR_CONFIG_SETTING_AUTOSAVE :Autosave: {STRING2} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Select interval between automatic game saves @@ -2689,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l STR_ABOUT_OPENTTD :{WHITE}About OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game @@ -3114,8 +3116,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepts STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Show list of accepted cargo STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accepts: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}This station has exclusive transport rights in this town. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bought exclusive transport rights in this town. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}This station has exclusive transport rights in this town. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bought exclusive transport rights in this town. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratings STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Show station ratings @@ -3294,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requires STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{RAW_STRING}, {STRING}{RAW_STRING}, {STRING}{RAW_STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}waiting -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{RAW_STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{RAW_STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:RAW_STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} waiting{RAW_STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produces: {YELLOW}{STRING}{RAW_STRING} @@ -3367,6 +3367,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Remove all vehi STR_GROUP_RENAME_CAPTION :{BLACK}Rename a group +STR_GROUP_PROFIT_THIS_YEAR :Profit this year: +STR_GROUP_PROFIT_LAST_YEAR :Profit last year: +STR_GROUP_OCCUPANCY :Current usage: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :New Rail Vehicles STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :New Electric Rail Vehicles @@ -3398,6 +3403,7 @@ STR_PURCHASE_INFO_ALL_TYPES :All cargo types STR_PURCHASE_INFO_ALL_BUT :All but {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Tractive Effort: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Range: {GOLD}{COMMA} tiles +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Aircraft type: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Train vehicle selection list. Click on vehicle for information. Ctrl+Click for toggling hiding of the vehicle type STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Road vehicle selection list. Click on vehicle for information. Ctrl+Click for toggling hiding of the vehicle type @@ -3531,10 +3537,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev locomoti STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost: {CURRENCY_LONG} Weight: {WEIGHT_SHORT}{}Speed: {VELOCITY} Power: {POWER}{}Running Cost: {CURRENCY_LONG}/yr{}Capacity: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cost: {CURRENCY_LONG} Weight: {WEIGHT_SHORT}{}Speed: {VELOCITY} Power: {POWER} Max. T.E.: {6:FORCE}{}Running Cost: {4:CURRENCY_LONG}/yr{}Capacity: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Aircraft type: {STRING}{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Aircraft type: {STRING}{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Aircraft type: {STRING} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Aircraft type: {STRING} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace {STRING} - {STRING1} @@ -3657,7 +3664,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} year{P STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} year{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. speed: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. speed: {LTBLUE}{VELOCITY} {BLACK}Range: {LTBLUE}{COMMA} tiles +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. speed: {LTBLUE}{VELOCITY} {BLACK}Aircraft type: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. speed: {LTBLUE}{VELOCITY} {BLACK}Aircraft type: {LTBLUE}{STRING} {BLACK}Range: {LTBLUE}{COMMA} tiles STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Weight: {LTBLUE}{WEIGHT_SHORT} {BLACK}Power: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Weight: {LTBLUE}{WEIGHT_SHORT} {BLACK}Power: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 7f41fbba2f..d5169628fd 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -10,7 +10,7 @@ ##grflangid 0x3d -# $Id: english_AU.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: english_AU.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2662,7 +2662,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l STR_ABOUT_OPENTTD :{WHITE}About OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game @@ -3079,8 +3079,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepts STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Show list of accepted cargo STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accepts: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}This station has exclusive transport rights in this town. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bought exclusive transport rights in this town. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}This station has exclusive transport rights in this town. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bought exclusive transport rights in this town. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratings STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Show station ratings @@ -3327,6 +3327,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Remove all vehi STR_GROUP_RENAME_CAPTION :{BLACK}Rename a group + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :New Rail Vehicles STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :New Electric Rail Vehicles @@ -3479,10 +3480,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev locomoti STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost: {CURRENCY_LONG} Weight: {WEIGHT_SHORT}{}Speed: {VELOCITY} Power: {POWER}{}Running Cost: {CURRENCY_LONG}/yr{}Capacity: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cost: {CURRENCY_LONG} Weight: {WEIGHT_SHORT}{}Speed: {VELOCITY} Power: {POWER} Max. T.E.: {6:FORCE}{}Running Cost: {4:CURRENCY_LONG}/yr{}Capacity: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace {STRING} - {STRING} @@ -3600,7 +3598,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} year{P STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} year{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. speed: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. speed: {LTBLUE}{VELOCITY} {BLACK}Range: {LTBLUE}{COMMA} tiles STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Weight: {LTBLUE}{WEIGHT_SHORT} {BLACK}Power: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Weight: {LTBLUE}{WEIGHT_SHORT} {BLACK}Power: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 16dd260815..1f38c3a8a0 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -10,7 +10,7 @@ ##grflangid 0x00 -# $Id: english_US.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: english_US.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Off STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Left-click scrolling: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Enable scrolling the map by dragging it with the left mouse button. This is especially useful when using a touch-screen for scrolling +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Close window on right-click: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Closes a window by right-clicking inside it. Disables the tooltip on right-click! STR_CONFIG_SETTING_AUTOSAVE :Autosave: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Select interval between automatic game saves @@ -2689,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l STR_ABOUT_OPENTTD :{WHITE}About OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game @@ -3114,8 +3116,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepts STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Show list of accepted cargo STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accepts: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}This station has exclusive transport rights in this town. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bought exclusive transport rights in this town. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}This station has exclusive transport rights in this town. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bought exclusive transport rights in this town. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ratings STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Show station ratings @@ -3294,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requires STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requires: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}waiting -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requires: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} waiting{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produces: {YELLOW}{STRING}{STRING} @@ -3367,6 +3367,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Remove all vehi STR_GROUP_RENAME_CAPTION :{BLACK}Rename a group +STR_GROUP_PROFIT_THIS_YEAR :Profit this year: +STR_GROUP_PROFIT_LAST_YEAR :Profit last year: +STR_GROUP_OCCUPANCY :Current usage: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :New Rail Vehicles STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :New Electric Rail Vehicles @@ -3398,6 +3403,7 @@ STR_PURCHASE_INFO_ALL_TYPES :All cargo types STR_PURCHASE_INFO_ALL_BUT :All but {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Tractive Effort: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Range: {GOLD}{COMMA} tiles +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Aircraft type: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Train vehicle selection list. Click on vehicle for information. Ctrl+Click to toggle hiding of the vehicle type STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Road vehicle selection list. Click on vehicle for information. Ctrl+Click to toggle hiding of the vehicle type @@ -3531,10 +3537,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev locomoti STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost: {CURRENCY_LONG} Weight: {WEIGHT_SHORT}{}Speed: {VELOCITY} Power: {POWER}{}Running Cost: {CURRENCY_LONG}/yr{}Capacity: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cost: {CURRENCY_LONG} Weight: {WEIGHT_SHORT}{}Speed: {VELOCITY} Power: {POWER} Max. T.E.: {6:FORCE}{}Running Cost: {4:CURRENCY_LONG}/yr{}Capacity: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Aircraft type: {STRING}{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Aircraft type: {STRING}{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Aircraft type: {STRING} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Max. Speed: {VELOCITY}{}Aircraft type: {STRING} Range: {COMMA} tiles{}Capacity: {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace {STRING} - {STRING} @@ -3657,7 +3664,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} year{P STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} year{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. speed: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. speed: {LTBLUE}{VELOCITY} {BLACK}Range: {LTBLUE}{COMMA} tiles +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. speed: {LTBLUE}{VELOCITY} {BLACK}Aircraft type: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. speed: {LTBLUE}{VELOCITY} {BLACK}Aircraft type: {LTBLUE}{STRING} {BLACK}Range: {LTBLUE}{COMMA} tiles STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Weight: {LTBLUE}{WEIGHT_SHORT} {BLACK}Power: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Weight: {LTBLUE}{WEIGHT_SHORT} {BLACK}Power: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index a8f8822f8f..502d0b578f 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -11,7 +11,7 @@ ##case n -# $Id: esperanto.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: esperanto.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2265,7 +2265,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanie poseda STR_ABOUT_OPENTTD :{WHITE}Pri OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Origina kopirajto {COPYRIGHT} 1995 Chris Sawyer, Ĉiuj rajtoj rezervitaj STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 La teamo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 La teamo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Konservu Ludon @@ -2796,6 +2796,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Forigi ĉiujn v STR_GROUP_RENAME_CAPTION :{BLACK}Alinomi grupon + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novaj Relaj Veturiloj STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Novaj Elektraj Relaj Veturiloj @@ -2954,8 +2955,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magleva lokomot STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kosto: {CURRENCY_LONG} Pezo: {WEIGHT_SHORT}{}Rapido: {VELOCITY} Forto: {POWER}{}Irkosto: po {CURRENCY_LONG} jare{}Kapablo: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kosto: {CURRENCY_LONG} Pezo: {WEIGHT_SHORT}{}Rapido: {VELOCITY} Povo: {POWER} Maks. T.E.: {6:FORCE}{}Irkosto: {4:CURRENCY_LONG}/jaro{}Kapacito: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kosto: {CURRENCY_LONG} Maks. Rapido: {VELOCITY}{}Kapacito: {CARGO_LONG}, {CARGO_LONG}{}Irkosto: {CURRENCY_LONG}/jaro -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kosto: {CURRENCY_LONG} Maks. Rapido: {VELOCITY}{}Kapacito: {CARGO_LONG}{}Irkosto: {CURRENCY_LONG}/jaro +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Kosto: {CURRENCY_LONG} Maks. Rapido: {VELOCITY}{}Kapacito: {CARGO_LONG}{}Irkosto: {CURRENCY_LONG}/jaro # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Anstataŭu {STRING.n} - {STRING} diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 14979ce0ce..b0c6656d58 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -11,7 +11,7 @@ ##case g in sü -# $Id: estonian.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: estonian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2745,7 +2745,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ettevõtte maa STR_ABOUT_OPENTTD :{WHITE}OpenTTD lisainfo STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Algne autorikaitse {COPYRIGHT} 1995 Chris Sawyer, kõik õigused kaitstud STR_ABOUT_VERSION :{BLACK}OpenTTD osa {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD meeskond +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD meeskond # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Mängu salvestamine @@ -3170,8 +3170,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Võtab v STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Näita vastuvõetavate veoste nimistut STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Võtab vastu: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Antud jaamal on eksklusiivsed transpordiõigused selles linnas. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ostis eksklusiivsed transpordiõigused antud linnas. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Antud jaamal on eksklusiivsed transpordiõigused selles linnas. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ostis eksklusiivsed transpordiõigused antud linnas. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Hinnangud STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Näita jaamahinnangut @@ -3418,6 +3418,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Eemalda kõik s STR_GROUP_RENAME_CAPTION :{BLACK}Rühma nime vahetamine + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Uued rööbassõidukid STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Uus elektriraudteesõiduk @@ -3582,10 +3583,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnethõljukve STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Hind: {CURRENCY_LONG} Tühimass: {WEIGHT_SHORT}{}Tippkiirus: {VELOCITY} Võimsus: {POWER}{}Käituskulud: {CURRENCY_LONG}/aastas{}Kandevõime: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Hind: {CURRENCY_LONG} Tühimass: {WEIGHT_SHORT}{}Kiirus: {VELOCITY} Võimsus: {POWER} Veojõud: {6:FORCE}{}Käituskulud: {4:CURRENCY_LONG}/aasta{}Mahutavus: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Hind: {CURRENCY_LONG} Tippkiirus: {VELOCITY}{}Kandevõime: {CARGO_LONG}, {CARGO_LONG}{}Käituskulud: {CURRENCY_LONG}/a -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Hind: {CURRENCY_LONG} Tippkiirus: {VELOCITY}{}Kandevõime: {CARGO_LONG}{}Käituskulud: {CURRENCY_LONG}/a -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Maksumus: {CURRENCY_LONG} Maksimaalne kiirus: {VELOCITY} Tegevusraadius: {COMMA} ruutu{}Mahutavus: {CARGO_LONG}, {CARGO_LONG}{}Kasutamise hind: {CURRENCY_LONG}/aastas -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Maksumus: {CURRENCY_LONG} Maksimaalne kiirus: {VELOCITY} Tegevusraadius: {COMMA} ruutu{}Mahutavus: {CARGO_LONG}{}Kasutamise kulu: {CURRENCY_LONG}/aastas +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Hind: {CURRENCY_LONG} Tippkiirus: {VELOCITY}{}Kandevõime: {CARGO_LONG}{}Käituskulud: {CURRENCY_LONG}/a # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Asenda {STRING} - {STRING} @@ -3707,7 +3705,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} aasta{P STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} aasta{P "" t} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Tippkiirus: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maksimaalne kiirus: {LTBLUE}{VELOCITY} {BLACK}Tegevusraadius: {LTBLUE}{COMMA} ruutu STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Tühimass: {LTBLUE}{WEIGHT_SHORT} {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Tippkiirus: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Tühimass: {LTBLUE}{WEIGHT_SHORT} {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Tippkiirus: {LTBLUE}{VELOCITY} {BLACK}Veojõud: {LTBLUE}{FORCE} diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index 10121bc64a..1f2b0075b9 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -11,7 +11,7 @@ ##gender m f n -# $Id: faroese.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: faroese.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2427,7 +2427,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ogn hjá fyrit STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upprunalig upphavsrættindi {COPYRIGHT} 1995 Chris Sawyer, Øll rættindi umbiðin STR_ABOUT_VERSION :{BLACK}OpenTTD útgáva {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD toymi +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD toymi # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Goym spæl @@ -2767,8 +2767,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Tekur í STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Vís lista yvir góðtiknan farm STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Tekur í móti: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Henda støðin hevur flutnings einkarættindi í hesari bygdini. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} keypti flutnings einkarættindi í hesi bygdini. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Henda støðin hevur flutnings einkarættindi í hesari bygdini. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} keypti flutnings einkarættindi í hesi bygdini. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Metingar STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vís støð metingar @@ -2989,6 +2989,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Bein øll flutn STR_GROUP_RENAME_CAPTION :{BLACK}Navngev ein bólk + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nýggj jarnbreyta flutningstól STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nýggj ravmagns jarnbreyta flutningstól @@ -3141,10 +3142,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomoti STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostnaður: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Ferð: {VELOCITY} Megi: {POWER}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár{}Pláss: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kostnaður: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Ferð: {VELOCITY} Megi: {POWER} Maks. D.Ó.: {6:FORCE}{}Rakstrar kostnaður: {4:CURRENCY_LONG}/ár{}Pláss: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY}{}Pláss: {CARGO_LONG}, {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY}{}Pláss: {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY} Vídd: {COMMA} puntar{}Pláss: {CARGO_LONG}, {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY} Vídd: {COMMA} puntar{}Pláss: {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Kostnaður: {CURRENCY_LONG} Maks. Ferð: {VELOCITY}{}Pláss: {CARGO_LONG}{}Rakstrar kostnaður: {CURRENCY_LONG}/ár # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Být um {STRING} - {STRING} @@ -3230,7 +3228,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} ár ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ár ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. ferð: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks. ferð: {LTBLUE}{VELOCITY} {BLACK}Vídd: {LTBLUE}{COMMA} puntar STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Megi: {LTBLUE}{POWER}{BLACK} Maks. ferð: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Megi: {LTBLUE}{POWER}{BLACK} Maks. ferð: {LTBLUE}{VELOCITY} {BLACK}Maks. D.Ó.: {LTBLUE}{FORCE} diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 8afa6ab6ab..645340ee9f 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -10,7 +10,7 @@ ##grflangid 0x35 -# $Id: finnish.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: finnish.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Pois STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vasemmalla hiiren painikkeella liikkuminen: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Salli näkymän siirtäminen vetämällä hiiren vasemmalla näppäimellä. Hyödyllinen erityisesti kosketusnäyttöä käytettäessä +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Sulje ikkuna hiiren oikealla painikkeella napsauttamalla: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Ikkunat sulkeutuvat, kun niitä napsautetaan hiiren oikealla painikkeella. Tämä korvaa tavallisesti näkyvän työkaluvihjeen! STR_CONFIG_SETTING_AUTOSAVE :Automaattitallennus: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Valitse aikaväli automaattisille pelitallennuksille @@ -2689,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Yhtiön omistam STR_ABOUT_OPENTTD :{WHITE}Tietoja OpenTTD:stä STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Alkuperäiset oikeudet {COPYRIGHT} 1995 Chris Sawyer, kaikki oikeudet pidätetään STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Tallenna peli @@ -3114,8 +3116,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Ottaa va STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Näytä luettelo vastaanotettavasta rahdista. STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Vastaanottaa: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tällä asemalla on kuljetusyksinoikeus tässä kaupungissa. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} osti tämän kaupungin kuljetusyksinoikeuden. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tällä asemalla on kuljetusyksinoikeus tässä kaupungissa. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} osti tämän kaupungin kuljetusyksinoikeuden. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Arviot STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Näytä aseman arviot. @@ -3294,9 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Tarvitse STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Tarvitsee: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Tarvitsee -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}odottamassa +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Tarvitsee: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} odottamassa{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Tuottaa: {YELLOW}{STRING}{STRING} @@ -3365,6 +3367,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Poista kaikki a STR_GROUP_RENAME_CAPTION :{BLACK}Nimeä ryhmä +STR_GROUP_PROFIT_THIS_YEAR :Tuotto tänä vuonna: +STR_GROUP_PROFIT_LAST_YEAR :Tuotto viime vuonna: +STR_GROUP_OCCUPANCY_VALUE :{NUM} % + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Uusi juna STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Uusi sähköjuna @@ -3396,6 +3402,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Kaikki rahtityy STR_PURCHASE_INFO_ALL_BUT :Kaikki paitsi {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Suurin vetovoima: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Toimintasäde: {GOLD}{COMMA} ruutua +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Lentokonetyyppi: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Junien valintaluettelo. Lisää tietoja junaa napsauttamalla. Ctrl+Klik näyttää tai piilottaa kulkuneuvon tyypin STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Ajoneuvojen valintaluettelo. Napsauta ajoneuvoa saadaksesi lisää tietoja. Ctrl+Klik näyttää tai piilottaa ajoneuvon tyypin @@ -3529,10 +3536,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev-veturin STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Hinta: {CURRENCY_LONG} Paino: {WEIGHT_SHORT}{}Nopeus: {VELOCITY} Teho: {POWER}{}Käyttökustannukset: {CURRENCY_LONG}/vuosi{}Kapasiteetti: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Hinta: {CURRENCY_LONG} Paino: {WEIGHT_SHORT}{}Nopeus: {VELOCITY} Teho: {POWER} Maks. vetovoima: {6:FORCE}{}Käyttökustannukset: {4:CURRENCY_LONG}/v{}Kapasiteetti: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. Nopeus: {VELOCITY}{}Kapasiteetti: {CARGO_LONG}, {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. Nopeus: {VELOCITY}{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Hinta: {CURRENCY_LONG} Suurin nopeus: {VELOCITY} Toimintasäde: {COMMA} ruutua{}Kapasiteetti: {CARGO_LONG}, {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/vuosi -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Suurin nopeus: {VELOCITY} Toimintasäde: {COMMA} ruutua{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/vuosi +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Lentokonetyyppi: {STRING}{}Kapasiteetti: {CARGO_LONG}, {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Lentokonetyyppi: {STRING}{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Lentokonetyyppi: {STRING} Toimintamatka: {COMMA} ruutua{}Kapasiteetti: {CARGO_LONG}, {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Hinta: {CURRENCY_LONG} Maks. nopeus: {VELOCITY}{}Lentokonetyyppi: {STRING} Toimintamatka: {COMMA} ruutua{}Kapasiteetti: {CARGO_LONG}{}Käyttökustannukset: {CURRENCY_LONG}/v # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Korvaa {STRING} - {STRING} @@ -3655,7 +3663,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} vuo{P s STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} vuo{P si tta} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Huippunopeus: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Suurin nopeus: {LTBLUE}{VELOCITY} {BLACK}Toimintasäde: {LTBLUE}{COMMA} ruutua +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maks. nopeus: {LTBLUE}{VELOCITY} {BLACK}Lentokonetyyppi: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Maks. nopeus: {LTBLUE}{VELOCITY} {BLACK}Lentokonetyyppi: {LTBLUE}{STRING} {BLACK}Toimintamatka: {LTBLUE}{COMMA} ruutua STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Paino: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teho: {LTBLUE}{POWER}{BLACK} Maks. nopeus: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Paino: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teho: {LTBLUE}{POWER}{BLACK} Maks. nopeus: {LTBLUE}{VELOCITY} {BLACK}Maks. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/french.txt b/src/lang/french.txt index f773b29f3b..e6df9662a2 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -11,7 +11,7 @@ ##gender m m2 f -# $Id: french.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: french.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Désactivé STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Défilement par clic gauche{NBSP}: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Active le défilement de la carte en la glissant avec le bouton gauche de la souris. C'est surtout utile pour les écrans tactiles +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fermer une fenêtre en cliquant droit{NBSP}: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fermer une fenêtre en cliquant droit à l’intérieur de celle-ci. Désactive l'infobulle sur clic droit{NBSP}! STR_CONFIG_SETTING_AUTOSAVE :Sauvegarde automatique{NBSP}: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Sélectionner l'intervalle de temps entre les sauvegardes automatiques @@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrain apparte STR_ABOUT_OPENTTD :{WHITE}À propos de OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Tous droits réservés STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 L'équipe OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 L'équipe OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sauvegarder la partie @@ -3115,8 +3117,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepte STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Afficher les marchandises acceptées STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accepte{NBSP}: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Cette station a les droits de transport exclusifs dans cette ville. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} a acheté les droits de transport exclusifs dans cette ville. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Cette station a les droits de transport exclusifs dans cette ville. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} a acheté les droits de transport exclusifs dans cette ville. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Qualité STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Afficher la qualité de service de la station @@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Nécessi STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Nécessite{NBSP}: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Nécessite -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}en attente -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Nécessite{NBSP}: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}{NBSP}: {CARGO_SHORT} en attente{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produit{NBSP}: {YELLOW}{STRING}{STRING} @@ -3368,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Retirer tous le STR_GROUP_RENAME_CAPTION :{BLACK}Renommer un groupe +STR_GROUP_PROFIT_THIS_YEAR :Profit cette année{NBSP}: +STR_GROUP_PROFIT_LAST_YEAR :Profit l'année précédente{NBSP}: +STR_GROUP_OCCUPANCY :Utilisation actuelle{NBSP}: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nouveaux véhicules ferroviaires STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nouveaux véhicules ferroviaires électriques @@ -3399,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Tous les types STR_PURCHASE_INFO_ALL_BUT :Tous sauf {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Effort de traction max.{NBSP}: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rayon d'action{NBSP}: {GOLD}{COMMA}{NBSP}cases +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Type d'aéronef{NBSP}: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Choix du véhicule. Cliquer sur un véhicule pour obtenir des informations. Ctrl-clic pour basculer le masquage du type de véhicule STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Choix du véhicule routier. Cliquer sur un véhicule pour obtenir des informations. Ctrl-clic pour basculer le masquage du type de véhicule @@ -3532,10 +3538,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}locomotive STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Prix{NBSP}: {CURRENCY_LONG} − Poids{NBSP}: {WEIGHT_SHORT}{}Vitesse{NBSP}: {VELOCITY} − Puissance{NBSP}: {POWER}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an{}Capacité{NBSP}: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Prix{NBSP}: {CURRENCY_LONG} − Poids{NBSP}: {WEIGHT_SHORT}{}Vitesse{NBSP}: {VELOCITY} − Puissance{NBSP}: {POWER}{}Effort de traction max.{NBSP}: {6:FORCE}{}Coûts d'entretien{NBSP}: {4:CURRENCY_LONG}/an{}Capacité{NBSP}: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Prix{NBSP}: {CURRENCY_LONG} − Vitesse max.{NBSP}: {VELOCITY}{}Capacité{NBSP}: {CARGO_LONG}, {CARGO_LONG}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Prix{NBSP}: {CURRENCY_LONG} − Vitesse max.{NBSP}: {VELOCITY}{}Capacité{NBSP}: {CARGO_LONG}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Coût{NBSP}: {CURRENCY_LONG} − Vitesse max.{NBSP}: {VELOCITY} − Rayon d'action{NBSP}: {COMMA} cases{}Capacité{NBSP}: {CARGO_LONG}, {CARGO_LONG}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Coût{NBSP}: {CURRENCY_LONG} − Vitesse max.{NBSP}: {VELOCITY} − Rayon d'action{NBSP}: {COMMA} cases{}Capacité{NBSP}: {CARGO_LONG}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Prix{NBSP}: {CURRENCY_LONG} − Vitesse max.{NBSP}: {VELOCITY}{}Capacité{NBSP}: {CARGO_LONG}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Prix{NBSP}: {CURRENCY_LONG} - Vitesse max.{NBSP}: {VELOCITY}{}Type d'aéronef{NBSP}: {STRING}{}Capacité{NBSP}: {CARGO_LONG}, {CARGO_LONG}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Prix{NBSP}: {CURRENCY_LONG} - Vitesse max.{NBSP}: {VELOCITY}{}Type d'aéronef{NBSP}: {STRING}{}Capacité{NBSP}: {CARGO_LONG}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Prix{NBSP}: {CURRENCY_LONG} - Vitesse max.{NBSP}: {VELOCITY}{}Type d'aéronef{NBSP}: {STRING} - Rayon d'action{NBSP}: {COMMA} cases{}Capacité{NBSP}: {CARGO_LONG}, {CARGO_LONG}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Prix{NBSP}: {CURRENCY_LONG} - Vitesse max.{NBSP}: {VELOCITY}{}Type d'aéronef{NBSP}: {STRING} - Rayon d'action{NBSP}: {COMMA} cases{}Capacité{NBSP}: {CARGO_LONG}{}Coûts d'entretien{NBSP}: {CURRENCY_LONG}/an # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Remplacer {STRING} - {STRING} @@ -3658,7 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} an{P "" STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} an{P "" nées} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Vitesse max.{NBSP}: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Vitesse max.{NBSP}: {LTBLUE}{VELOCITY}{BLACK} − Rayon d'action{NBSP}: {LTBLUE}{COMMA} cases +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Vitesse max.{NBSP}: {LTBLUE}{VELOCITY}{BLACK} - Type d'aéronef{NBSP}: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Vitesse max.{NBSP}: {LTBLUE}{VELOCITY}{BLACK} - Type d'aéronef{NBSP}: {LTBLUE}{STRING}{BLACK} - Rayon d'action{NBSP}: {LTBLUE}{COMMA} cases STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Poids{NBSP}: {LTBLUE}{NBSP}{WEIGHT_SHORT} − {BLACK}Puissance{NBSP}: {LTBLUE}{NBSP}{POWER}{BLACK} − Vitesse max.{NBSP}: {LTBLUE}{NBSP}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Poids{NBSP}: {LTBLUE}{WEIGHT_SHORT}{BLACK} − Puissance{NBSP}: {LTBLUE}{POWER}{BLACK} − Vitesse max.{NBSP}: {LTBLUE}{VELOCITY}{BLACK} − E.T. max.{NBSP}: {LTBLUE}{FORCE} diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index f07b2ed526..d91fef5cad 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -12,7 +12,7 @@ ##case nom gen dat voc -# $Id: gaelic.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: gaelic.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1574,6 +1574,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Dheth STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Sgroladh le briogadh clì: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Cuir an comas gun tèid am mapa a sgroladh le slaodadh le putan clì na luchaige. Tha seo feumail gu h-àraidh nuair a chleachdas tu sgrìn-shuathaidh airson sgroladh +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Dùin an uinneag le briogadh deas: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Dùinidh seo uinneag le briogadh deas ’na broinn. Cuiridh e à comas an gliocas-sgrìn le briogadh deas! STR_CONFIG_SETTING_AUTOSAVE :Fèin-sàbhaladh: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Tagh dè cho tric ’s a thèid geamannan a shàbhaladh gu fèin-obrachail @@ -2930,7 +2932,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tìr a' chompan STR_ABOUT_OPENTTD :{WHITE}Mu dheidhinn OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Còir-lethbhreac tùsail {COPYRIGHT} 1995 Chris Sawyer, a h-uile còir glèidhte STR_ABOUT_VERSION :{BLACK}OpenTTD tionndadh {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 An sgioba OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 An sgioba OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sàbhail an geama @@ -3355,8 +3357,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Na ghabh STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Seall liosta a' charago a thèid a ghabhail ris STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Gabhar ri: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tha còirichean giùlain às-dùnach aig an stèisean seo sa bhaile seo. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{BLACK}Cheannaich {YELLOW}{COMPANY}{BLACK} còirichean giùlain às-dùnach sa bhaile seo. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tha còirichean giùlain às-dùnach aig an stèisean seo sa bhaile seo. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{BLACK}Cheannaich {YELLOW}{COMPANY}{BLACK} còirichean giùlain às-dùnach sa bhaile seo. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Rangachaidhean STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Seall rangachaidhean nan stèiseanan @@ -3535,11 +3537,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Feum air STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Feum air: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Feum air -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}a' feitheamh -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Feum air: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} a' feitheamh{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Toradh: {YELLOW}{STRING}{STRING} @@ -3608,6 +3608,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Thoir a h-uile STR_GROUP_RENAME_CAPTION :{BLACK}Thoir ainm ùr air buidheann +STR_GROUP_PROFIT_THIS_YEAR :Prothaid am bliadhna: +STR_GROUP_PROFIT_LAST_YEAR :Prothaid an-uiridh: +STR_GROUP_OCCUPANCY :Cleachdadh an-dràsta: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Carbadan-rèile ùra STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Carbadan-rèile dealain ùra @@ -3639,6 +3644,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Na h-uile seòr STR_PURCHASE_INFO_ALL_BUT :Na h-uile ach {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Spàirn tàirnge as motha: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Astar: {GOLD}{COMMA} {P leac leac leacan leac} +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Seòrsa a' charbaid-adhair: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Liosta airson carbadan-rèile a thaghadh. Briog air carbad airson fiosrachaidh. Ctrl+briog gus toglachadh an tèid seòrsa a’ charbaid fhalach gus nach tèid STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liosta airson carbadan-rathaid a thaghadh. Briog air carbad airson fiosrachaidh. Ctrl+briog gus toglachadh an tèid seòrsa a’ charbaid fhalach gus nach tèid @@ -3772,10 +3778,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :einnsean magnai STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cosgais: {CURRENCY_LONG} Cuideam: {WEIGHT_SHORT}{}Luaths: {VELOCITY} Cumhachd: {POWER}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna{}Tomhas-lìonaidh: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cosgais: {CURRENCY_LONG} Cuideam: {WEIGHT_SHORT}{}Luaths: {VELOCITY} Cumhachd: {POWER} Neart: {6:FORCE}{}Cosgaisean ruith: {4:CURRENCY_LONG}/bliadhna{}Tomhas-lìonaidh: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY}{}Tomhas-lìonaidh: {CARGO_LONG}, {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY}{}Tomhas-lìonaidh: {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY} Astar: {COMMA} leacan{}Tomhas-lìonaidh: {CARGO_LONG}, {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY} Astar: {COMMA} leacan{}Tomhas-lìonaidh: {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Luaths as motha: {VELOCITY}{}Tomhas-lìonaidh: {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Cogais: {CURRENCY_LONG} Luaths as motha: {VELOCITY}{}Seòrsa carbaid-adhair: {STRING}{}Tomhas-lìonaidh: {CARGO_LONG}, {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Cogais: {CURRENCY_LONG} Astar as motha: {VELOCITY}{}Seòrsa carbaid-adhair: {STRING}{}Tomhas-lìonaidh: {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Cogais: {CURRENCY_LONG} Luaths as motha: {VELOCITY}{}Seòrsa carbaid-adhair: {STRING} Astar: {COMMA} {P leacag leacag leacagan leacag}{}Tomhas-lìonaidh: {CARGO_LONG}, {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Cosgais: {CURRENCY_LONG} Astar as motha: {VELOCITY}{}Seòrsa carbaid-adhair: {STRING} Astar: {COMMA} {P leacag leacag leacagan leacag}{}Capacity: {CARGO_LONG}{}Cosgaisean ruith: {CURRENCY_LONG}/bliadhna # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Leasaich {STRING} - {STRING} @@ -3898,7 +3905,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} {P bhli STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P bhliadhna bhliadhna bliadhna bliadhna} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Luaths as motha: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Luaths as motha: {LTBLUE}{VELOCITY} {BLACK}Astar: {LTBLUE}{COMMA} {P leac leac leacan leac} +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Luaths as motha: {LTBLUE}{VELOCITY} {BLACK}Seòrsa carbaid-adhair: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Luaths as motha: {LTBLUE}{VELOCITY} {BLACK}Seòrsa carbaid-adhair: {LTBLUE}{STRING} {BLACK}Astar: {LTBLUE}{COMMA} {P leacag leacag leacagan leacag} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Cuideam: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhachd: {LTBLUE}{POWER}{BLACK} Luaths as motha: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Cuideam: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhachd: {LTBLUE}{POWER}{BLACK} Luaths as motha: {LTBLUE}{VELOCITY} {BLACK}Neart as motha: {LTBLUE}{FORCE} diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 3db42a79bc..2504d9db48 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -11,7 +11,7 @@ ##gender m f n -# $Id: galician.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: galician.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Apagado STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Desprazamento con click esquerdo: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Habilitar o desprazamento do mapa arrastrándoo co botón esquerdo do rato. Isto é especialmente útil se se emprega unha pantalla táctil para desprazarse +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Pechar a fiestra con click dereito: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Pecha a fiestra facendo botón dereito dentro de ela. Deshabilita a axuda contextual facendo click-dereito! STR_CONFIG_SETTING_AUTOSAVE :Autogravado: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecciona o intervalo entre gravados automáticos das partidas @@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreo propieda STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright orixinal {COPYRIGHT} 1995 Chris Sawyer, Tódolos dereitos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 O equipo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 O equipo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gravar partida @@ -3115,8 +3117,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acepta STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar a lista da carga aceptada STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Acepta: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estación ten dereitos de transporte exclusivos nesta cidade. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} comprou a exclusiva de dereitos de transporte nesta cidade. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estación ten dereitos de transporte exclusivos nesta cidade. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} comprou a exclusiva de dereitos de transporte nesta cidade. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Puntuacións: STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostra-las puntuacións da estación @@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Require: STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Require: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Require -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}agardando -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Require: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} agardando{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING} @@ -3368,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Borrar tódolos STR_GROUP_RENAME_CAPTION :{BLACK}Renomear un grupo +STR_GROUP_PROFIT_THIS_YEAR :Beneficio este ano: +STR_GROUP_PROFIT_LAST_YEAR :Beneficio do último ano: +STR_GROUP_OCCUPANCY :Uso actual: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novos vehículos ferroviarios STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Novos vehículos ferroviarios eléctricos @@ -3399,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Tódolos tipos STR_PURCHASE_INFO_ALL_BUT :Todos excepto {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Esforzo máximo de tracción: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Autonomía: {GOLD}{COMMA} cadros +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos ferroviarios - pincha nun vehículo para obter información STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos de estrada - pincha nun vehículo para obter información @@ -3532,10 +3538,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotora de m STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potencia: {POWER}{}Custo operativo: {CURRENCY_LONG}/ano{}Capacidade: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potencia: {POWER} Esforzo tractor máximo: {6:FORCE}{}Custo operativo: {4:CURRENCY_LONG}/ano{}Capacidade: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade máxima: {VELOCITY}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade máxima: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Custo: {CURRENCY_LONG} Velocidade máxima: {VELOCITY} Autonomía: {COMMA} cadros{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade máxima: {VELOCITY} Autonomía: {COMMA} cadros{}Capacidade: {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade máxima: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel. Máxima: {VELOCITY}{}Tipo aeronave: {STRING}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel. Máxima: {VELOCITY}{}Tipo aeronave: {STRING}{}Capacidade: {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel. Máxima: {VELOCITY}{}Tipo aeronave: {STRING} Distancia: {COMMA} tiles{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo operativo: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Vel. Máxima: {VELOCITY}{}Tipo Aeronave: {STRING} Autonomía: {COMMA} tiles{}Capacidade: {CARGO_LONG}{}Custo Operativo: {CURRENCY_LONG}/ano # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituír {STRING} - {STRING} @@ -3658,7 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} ano{P " STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ano{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade máxima: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocidade máxima: {LTBLUE}{VELOCITY} {BLACK}Autonomía: {LTBLUE}{COMMA} cadros +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Vel. máxima: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Vel. máxima: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} {BLACK}Alcance: {LTBLUE}{COMMA} cadros STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidade máxima: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potencia: {LTBLUE}{POWER}{BLACK} Velocidade máxima: {LTBLUE}{VELOCITY} {BLACK}T.E. máx.: {LTBLUE}{FORCE} diff --git a/src/lang/german.txt b/src/lang/german.txt index b812cd93db..e1f33bdb6d 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -11,7 +11,7 @@ ##gender m w n p -# $Id: german.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: german.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Aus STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrollen mit linker Maustaste: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Scrolle die Karte, indem mit der linken Maustaste gezogen wird. Dies ist besonders sinnvoll, wenn ein Touchscreen zum Scrollen genutzt wird +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fenster mit Rechtsklick schließen: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Schließt ein Fenster mittels Rechts-Klick. Schaltet Tooltip mit Rechts-Klick ab! STR_CONFIG_SETTING_AUTOSAVE :Autosave: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Wähle das Interval zwischen automatischen Speicherungen @@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firmeneigenes G STR_ABOUT_OPENTTD :{WHITE}OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Transport Tycoon-Urheberrecht {COPYRIGHT} 1995 Chris Sawyer, alle Rechte vorbehalten STR_ABOUT_VERSION :{BLACK}OpenTTD-Version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-Team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-Team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spiel speichern @@ -3115,8 +3117,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Angenomm STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Zeige Liste der angenommenen Frachtarten STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Nimmt an: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Diese Station hat in der zugehörigen Stadt exklusive Transportrechte . -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} hat die exklusiven Transportrechte in dieser Stadt erworben. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Diese Station hat in der zugehörigen Stadt exklusive Transportrechte . +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} hat die exklusiven Transportrechte in dieser Stadt erworben. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Bewertung STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Stationsbewertung anzeigen @@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Benötig STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}benötigt -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}wartend -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}benötigt: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} wartend{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produziert: {YELLOW}{STRING}{STRING} @@ -3368,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Liste leeren STR_GROUP_RENAME_CAPTION :{BLACK}Gruppe umbenennen +STR_GROUP_PROFIT_THIS_YEAR :Gewinn in diesem Jahr: +STR_GROUP_PROFIT_LAST_YEAR :Gewinn im letzten Jahr: +STR_GROUP_OCCUPANCY :Aktuelle Nutzung: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Neue Schienenfahrzeuge STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Neue elektrische Schienenfahrzeuge @@ -3399,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Alle Frachtarte STR_PURCHASE_INFO_ALL_BUT :Alles außer {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Zugkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Reichweite: {GOLD}{COMMA} Felder +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Flugzeugtyp: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Schienenfahrzeugsliste - Einzelheiten durch Anklicken des Fahrzeuges. Strg+Klick schaltet um zwischen Verstecken und Zeigen des Fahrzeugtyps STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Straßenfahrzeugsliste - Klicke auf ein Fahrzeug für Einzelheiten. Strg+Klick schaltet um zwischen Verstecken und Zeigen des Fahrzeugtyps @@ -3532,10 +3538,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=w}Magnetschw STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kosten: {CURRENCY_LONG} Gewicht: {WEIGHT_SHORT}{}Geschwindigk.: {VELOCITY} Leistung: {POWER}{}Betriebskosten: {CURRENCY_LONG} pro Jahr{}Kapazität: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Preis: {CURRENCY_LONG} Gewicht: {WEIGHT_SHORT}{}Max. Geschwindigkeit: {VELOCITY} Leistung: {POWER} Max. Zugkraft: {6:FORCE}{}Betriebskosten: {4:CURRENCY_LONG}/yr{}Kapazität: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Preis: {CURRENCY_LONG} Höchstgeschw.: {VELOCITY}{}Kapazität: {CARGO_LONG}, {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Preis: {CURRENCY_LONG} Höchstgeschw.: {VELOCITY}{}Kapazität: {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/Jahr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kosten: {CURRENCY_LONG} Höchstgeschwindigkeit: {VELOCITY} Reichweite: {COMMA} Felder{}Kapazität: {CARGO_LONG}, {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/a -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Höchstgeschwindigkeit: {VELOCITY} Reichweite: {COMMA} Felder{}Kapazität: {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/a +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Preis: {CURRENCY_LONG} Höchstgeschw.: {VELOCITY}{}Kapazität: {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/Jahr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY}{}Flugzeugtyp: {STRING}{}Kapazität: {CARGO_LONG}, {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/Jahr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY}{}Flugzeugtyp: {STRING}{}Kapazität: {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/Jahr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY}{}Flugzeugtyp: {STRING} Reichweite: {COMMA} Felder{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Betriebskosten: {CURRENCY_LONG}/Jahr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY}{}Flugzeugtyp: {STRING} Reichweite: {COMMA} tiles{}Kapazität: {CARGO_LONG}{}Laufende Kosten: {CURRENCY_LONG}/yr # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING} ersetzen - {STRING} @@ -3658,7 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} Jahr{P STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} Jahr{P "" e} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. Geschw.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. Geschwindigkeit: {LTBLUE}{VELOCITY} {BLACK}Reichweite: {LTBLUE}{COMMA} Felder +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. Geschw.: {LTBLUE}{VELOCITY} {BLACK}Flugzeugtyp: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. Geschw.: {LTBLUE}{VELOCITY} {BLACK}Flugzeugtyp: {LTBLUE}{STRING} {BLACK}Reichweite: {LTBLUE}{COMMA} Felder STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Gewicht: {LTBLUE}{WEIGHT_SHORT} {BLACK}Leistung: {LTBLUE}{POWER}{BLACK} Max. Geschw.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Gewicht: {LTBLUE}{WEIGHT_SHORT} {BLACK}Leistung: {LTBLUE}{POWER}{BLACK} Max. Geschw.: {LTBLUE}{VELOCITY} {BLACK}Max. Zugkraft: {LTBLUE}{FORCE} diff --git a/src/lang/greek.txt b/src/lang/greek.txt index a95caf1c1f..b6984220e1 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -12,7 +12,7 @@ ##case subs date geniki -# $Id: greek.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: greek.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1479,6 +1479,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Απενεργ STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Μετάβαση με αριστερό κλικ: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Ενεργοποίηση της κύλισης του χάρτη σύροντας τον με το αριστερό κουμπί του ποντικιού. Αυτό είναι ιδιαίτερα χρήσιμο για την κύλιση όταν χρησιμοποιείται οθόνη αφής +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Κλείσιμο παραθύρου με δεξί-κλικ: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Κλείνει το παράθυρο με δεξί πάτημα μέσα του. Απενεργοποιεί την ανάδυση επεξηγήσεων με το δεξί κουμπί! STR_CONFIG_SETTING_AUTOSAVE :Αυτόματο σώσιμο: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Επιλέξτε το διάστημα ανάμεσα σε δυο διαδοχικά σωσίματα του παιχνιδιου @@ -2796,7 +2798,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ιδιοκτη STR_ABOUT_OPENTTD :{WHITE}Σχετικά με το OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Αρχικά Πνευματικά Δικαιώματα {COPYRIGHT} 1995 Chris Sawyer, Όλα τα δικαιώματα διατηρούνται STR_ABOUT_VERSION :{BLACK}Έκδοση OpenTTD{REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Η ομάδα του OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Η ομάδα του OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Αποθήκευση Παιχνιδιού @@ -3221,8 +3223,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Δέχε STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Εμφάνιση λίστας αποδεκτών φορτίων STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Δέχεται: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Αυτός ο σταθμός έχει αποκλειστικά δικαιώματα μεταφοράς σε αυτήν την πόλη. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Η {YELLOW}{COMPANY}{BLACK} αγόρασε αποκλειστικά δικαιώματα για αυτήν την πόλη. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Αυτός ο σταθμός έχει αποκλειστικά δικαιώματα μεταφοράς σε αυτήν την πόλη. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Η {YELLOW}{COMPANY}{BLACK} αγόρασε αποκλειστικά δικαιώματα για αυτήν την πόλη. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Βαθμολογίες STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Εμφάνιση στατιστικών σταθμού @@ -3401,9 +3403,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Απαι STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Απαιτεί: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Απαιτεί -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}σε αναμονή +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Απαιτεί: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} σε αναμονή{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Παράγει: {YELLOW}{STRING}{STRING} @@ -3472,6 +3474,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Αφαίρεσ STR_GROUP_RENAME_CAPTION :{BLACK}Μετονομασία μίας ομάδας +STR_GROUP_PROFIT_THIS_YEAR :Κέρδος τρέχοντος έτους: +STR_GROUP_PROFIT_LAST_YEAR :Κέρδος προηγούμενου έτους +STR_GROUP_OCCUPANCY :Τρέσουσα χρήση: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Νέα Οχήματα Σιδηρόδρομου STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Νέα Οχήματα Ηλεκτροδοτουμένου Σιδηρόδρομου @@ -3503,6 +3510,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Όλοι οι STR_PURCHASE_INFO_ALL_BUT :Όλοι εκτός από {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Μέγ. Δύναμη Έλξης: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Εύρος: {GOLD}{COMMA} τετραγωνίδια +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Τύπος αεροσκάφους: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Λίστα επιλογής βαγονιού τρένου. Πατήστε σε ένα βαγόνι για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου βαγονιού STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Λίστα επιλογής οχήματος δρόμου. Πατήστε σε ένα όχημα για πληροφορίες. Ctrl+Click για εμφάνιση/απόκρυψη του τύπου οχήματος @@ -3642,10 +3650,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.geniki :μηχανής STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Κόστος: {CURRENCY_LONG} Βάρος: {WEIGHT_SHORT}{}Ταχύτητα: {VELOCITY} Δύναμη Κινητήρα: {POWER}{}Λειτουργικό κόστος: {CURRENCY_LONG}/έτος{}Χωρητικότητα: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Κόστος: {CURRENCY_LONG} Βάρος: {WEIGHT_SHORT}{}Ταχύτητα: {VELOCITY} Δύναμη Κινητήρα: {POWER} Μεγ. Ε.Δ: {6:FORCE}{}Λειτουργικό Κόστος: {4:CURRENCY_LONG}/έτος{}Χωρητικότητα: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY}{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY}{}Χωρητικότητα: {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY} Εμβέλεια: {COMMA} τετραγωνίδια{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY} Εμβέλεια: {COMMA} τετραγωνίδια{}Χωρητικότητα: {CARGO_LONG}{}Κόστος Λειτουργίας: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μέγ. Ταχύτητα: {VELOCITY}{}Χωρητικότητα: {CARGO_LONG}{}Λειτουργικό κόστος: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μεγ. Ταχύτητα: {VELOCITY}{}Τύπος αεροσκάφους: {STRING}{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Λειτουργικό κόστος: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μεγ. ταχύτητα: {VELOCITY}{}Τύπος αεροσκάφους: {STRING}{}Χωρητικότητα: {CARGO_LONG}{}Λειτουργικό κόστος: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μεγ. Ταχύτητα: {VELOCITY}{}Τύπος αεροσκάφους: {STRING} Εμβέλεια: {COMMA} tiles{}Χωρητικότητα: {CARGO_LONG}, {CARGO_LONG}{}Running Κόστος: {CURRENCY_LONG}/έτος +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Κόστος: {CURRENCY_LONG} Μεγ. Ταχύτητα: {VELOCITY}{}Τύπος αεροσκάφους: {STRING} Εμβέλεια: {COMMA} τεταγωνίδια{}Χωρητικότητα: {CARGO_LONG}{}Λειτουργικό κόστος: {CURRENCY_LONG}/έτος # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Αντικατάσταση {STRING} - {STRING} @@ -3768,7 +3777,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} χρό STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} χρόν{P ος ια} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Μέγ. ταχύτητα: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Μέγ. ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Εμβέλεια: {LTBLUE}{COMMA} τετραγωνίδια +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Μεγ. ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Τύπος αεροσκάφους: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Μεγ. ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Τύπος αεροσκάφους: {LTBLUE}{STRING} {BLACK}Εμβέλεια: {LTBLUE}{COMMA} τετραγωνίδια STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Δύναμη Κινητήρα: {LTBLUE}{POWER}{BLACK} Μέγ. Ταχύτητα: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Βάρος: {LTBLUE}{WEIGHT_SHORT} {BLACK}Δύναμη Κινητήρα: {LTBLUE}{POWER}{BLACK} Μέγ. Ταχύτητα: {LTBLUE}{VELOCITY} {BLACK}Μέγ. Ε.Δ: {LTBLUE}{FORCE} diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 532054857d..2da4e58d5d 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -12,7 +12,7 @@ ##case singular plural gen -# $Id: hebrew.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: hebrew.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1386,6 +1386,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :כבוי STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :גלילה בלחיצה שמאלית: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :אפשר גלילת המפה באמצעות גרירתה עם כפתור העכבר השמאלי. אפשרות זו שימושית במיוחד בעת שימוש במסך מגע לצורך גלילה +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :סגירת חלון בכפתור ימני: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :סוגר חלון על-ידי לחיצה ימנית בתוכו. מבטל הצגת מידע בלחיצה ימנית! STR_CONFIG_SETTING_AUTOSAVE :שמירה אוטומטית: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :בחר פרק זמן בין שמירות אוטומטיות @@ -2703,7 +2705,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :שטח בבעל STR_ABOUT_OPENTTD :{WHITE}OpenTTD אודות STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}כל הזכויות שמורות , {COPYRIGHT}1995 כריס סויר - זכויות יוצרים מקוריות STR_ABOUT_VERSION :{BLACK}{REV} גירסה , OpenTTD -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}שמור משחק @@ -3128,8 +3130,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}מקבל STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}הצג רשימת סוגי המטען שהתחנה מקבלת STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}מקבלת: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}לתחנה זו זכויות תעבורה בלעדיות בעיירה זו. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} רכשה זכויות תעבורה בלעדיות בעיירה זו. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}לתחנה זו זכויות תעבורה בלעדיות בעיירה זו. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} רכשה זכויות תעבורה בלעדיות בעיירה זו. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}דירוג STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}הצג את דירוג השירות @@ -3308,11 +3310,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{YELLOW}{3:STRI STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{YELLOW}{5:STRING}{4:STRING},{3:STRING}{2:STRING},{1:STRING}{0:STRING}{BLACK} :דורש ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}דורש -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}ממתין -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}דורש: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} ממתין{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{YELLOW}{1:STRING}{0:STRING}{BLACK} :מייצר @@ -3381,6 +3381,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :הסר את כ STR_GROUP_RENAME_CAPTION :{BLACK}שנה שם קבוצה +STR_GROUP_PROFIT_THIS_YEAR :רווח בשנה זו: +STR_GROUP_PROFIT_LAST_YEAR :רווח שנה שעברה: +STR_GROUP_OCCUPANCY :שימוש נוכחי: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :רכבות חדשות STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :רכבות חשמליות חדשות @@ -3412,6 +3417,7 @@ STR_PURCHASE_INFO_ALL_TYPES :כל סוגי STR_PURCHASE_INFO_ALL_BUT :{CARGO_LIST} כל סוגי המטען למעט STR_PURCHASE_INFO_MAX_TE :{BLACK}כוח סחיבה מקסימלי: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}טווח: {GOLD}{COMMA} משבצות +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}סוג כלי טיס: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK} בחירת קרונות - לחץ על קרון לקבלת מידע STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}רשימת כלי הרכב - בחר כלי רכב למידע @@ -3545,10 +3551,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :קטר פס מ STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}{1:WEIGHT_SHORT} :משקל {NBSP}{0:CURRENCY_LONG} :מחיר{} {NBSP}{3:POWER} :עצמת מנוע {NBSP}{2:VELOCITY} :מהירות {NBSP}{}{5:CARGO_LONG} : קיבולת {NBSP} לשנה {NBSP}{4:CURRENCY_LONG} :עלות תפעולית STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}עלות: {CURRENCY_LONG} משקל: {WEIGHT_SHORT}{}מהירות: {VELOCITY} הספק: {POWER} מקסימלי T.E.: {6:FORCE}{}עלות תפעולית: {4:CURRENCY_LONG}/לשנה{}קיבולת: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות שוטפת: {CURRENCY_LONG}/לשנה -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}קיבולת: {CARGO_LONG}{}הוצאה שוטפת: {CURRENCY_LONG}/לשנה -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}עלות: {CURRENCY_LONG} מהירות מירבית: {VELOCITY} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות תפעול: {CURRENCY_LONG}/שנה -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מירבית: {VELOCITY} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}{}עלות תפעול: {CURRENCY_LONG}/שנה +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}קיבולת: {CARGO_LONG}{}הוצאה שוטפת: {CURRENCY_LONG}/לשנה +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}סוג כלי טיס: {STRING}{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות תפעולית: {CURRENCY_LONG}/שנה +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}סוג כלי טיס: {STRING}{}קיבולת: {CARGO_LONG}{}עלות תפעולית: {CURRENCY_LONG}/שנה +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}סוג כלי טיס: {STRING} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}, {CARGO_LONG}{}עלות תפעולית: {CURRENCY_LONG}/שנה +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}עלות: {CURRENCY_LONG} מהירות מקסימלית: {VELOCITY}{}סוג כלי טיס: {STRING} טווח: {COMMA} משבצות{}קיבולת: {CARGO_LONG}{}עלות תפעולית: {CURRENCY_LONG}/שנה # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}החלף {STRING} - {STRING} @@ -3671,7 +3678,8 @@ STR_VEHICLE_INFO_AGE :({1:COMMA}) ש STR_VEHICLE_INFO_AGE_RED :{RED}({1:COMMA}) שנים {NBSP}{0:COMMA} STR_VEHICLE_INFO_MAX_SPEED :{BLACK}מהירות מקסימלית: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}מהירות מירבית: {LTBLUE}{VELOCITY} {BLACK}טווח: {LTBLUE}{COMMA} משבצות +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}מהירות מקס.: {LTBLUE}{VELOCITY} {BLACK}סוג כלי טיס: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}מהירות מקסימלית: {LTBLUE}{VELOCITY} {BLACK}סוג כלי טיס: {LTBLUE}{STRING} {BLACK}טווח: {LTBLUE}{COMMA} משבצות STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}משקל: {LTBLUE}{WEIGHT_SHORT} {BLACK}הספק: {LTBLUE}{POWER}{BLACK} מהירות מקסימלית: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}משקל: {LTBLUE}{WEIGHT_SHORT} {BLACK}הספק: {LTBLUE}{POWER}{BLACK} מהירות מקסימלית: {LTBLUE}{VELOCITY} {BLACK}T.E. מקסימלי: {LTBLUE}{FORCE} diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index f17bd1f089..589235b051 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -11,7 +11,7 @@ ##case t ba -# $Id: hungarian.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: hungarian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1436,6 +1436,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Kikapcsolva STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Bal gombos térképmozgatás: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Bal egérgombbal történő térképmozgatás engedélyezése. Különösen hasznos érintőképernyős mozgatás használata esetén +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Ablakok bezárása jobb gombbal: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :A jobb gombbal való kattintás az ablak területén bezárja az ablakot. Ez a beállítás kikapcsolja a segédletek jobb gombbal való megjelenítését! STR_CONFIG_SETTING_AUTOSAVE :Automatikus mentés: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Az automatikus mentések között eltelő idő @@ -2753,7 +2755,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Vállalat álta STR_ABOUT_OPENTTD :{WHITE}Az OpenTTD-ről STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Eredeti copyright {COPYRIGHT} 1995 Chris Sawyer, Minden jog fenntartva STR_ABOUT_VERSION :{BLACK}OpenTTD {REV} verzió -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 Az OpenTTD csapat +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Az OpenTTD csapat # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Játék mentése @@ -3178,8 +3180,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Elfogad STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Az elfogadott áruk listájának mutatása STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Elfogad:{WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ez az állomás kizárólagos szállítási jogokkal rendelkezik ezen a településen. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kizárólagos szállítási jogokat vásárolt a településen. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ez az állomás kizárólagos szállítási jogokkal rendelkezik ezen a településen. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kizárólagos szállítási jogokat vásárolt a településen. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vélemény STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vélemény megmutatása az állomásról @@ -3359,10 +3361,8 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Felhaszn ############ range for requires ends STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Elfogad: -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}várakozik -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} várakozik{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Gyárt: {YELLOW}{STRING}{STRING} @@ -3431,6 +3431,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Összes jármű STR_GROUP_RENAME_CAPTION :{BLACK}Csoport átnevezése +STR_GROUP_PROFIT_THIS_YEAR :Idei nyereség: +STR_GROUP_PROFIT_LAST_YEAR :Tavalyi nyereség: +STR_GROUP_OCCUPANCY :Jelenlegi kihasználtság: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Új vasúti járművek STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Új villamos vasúti járművek @@ -3462,6 +3467,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Minden rakomán STR_PURCHASE_INFO_ALL_BUT :Mindenre, kivéve {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maximális vonóerő: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Hatótávolság: {GOLD}{COMMA} mező +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Típus: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Vasúti jármű kiválasztása - kattints egy járműre az adataihoz. Ctrl+kattintással a járműtípus elrejthető/felfedhető STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Közúti jármű kiválasztása - kattints egy járműre az adataihoz. Ctrl+kattintással a járműtípus elrejthető/felfedhető @@ -3595,10 +3601,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Maglev mozdony STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Ár: {CURRENCY_LONG} Súly: {WEIGHT_SHORT}{}Sebesség: {VELOCITY} Teljesítmény: {POWER}{}Üzemeltetés: {CURRENCY_LONG}/év{}Kapacitás: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Ár: {CURRENCY_LONG} Súly: {WEIGHT_SHORT}{}Sebesség: {VELOCITY} Teljesítmény: {POWER} Maximális vonóerő: {6:FORCE}{}Üzemeltetés: {4:CURRENCY_LONG}/év{}Kapacitás: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Végsebesség: {VELOCITY}{}Kapacitás: {CARGO_LONG}, {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Végsebesség: {VELOCITY}{}Kapacitás: {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Ár: {CURRENCY_LONG} Végsebesség: {VELOCITY} Hatótávolság: {COMMA} mező{}Kapacitás: {CARGO_LONG}, {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Végsebesség: {VELOCITY} Hatótávolság: {COMMA} mező{}Kapacitás: {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Végsebesség: {VELOCITY}{}Kapacitás: {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Sebesség: {VELOCITY}{}Típus: {STRING}{}Kapacitás: {CARGO_LONG}, {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Sebesség: {VELOCITY}{}Típus: {STRING}{}Kapacitás: {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Sebesség: {VELOCITY}{}Típus: {STRING} Hatótávolság: {COMMA} mező{}Kapacitás: {CARGO_LONG}, {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Ár: {CURRENCY_LONG} Sebesség: {VELOCITY}{}Típus: {STRING} Hatótávolság: {COMMA} mező{}Kapacitás: {CARGO_LONG}{}Üzemeltetés: {CURRENCY_LONG}/év # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING} lecserélése - {STRING} @@ -3721,7 +3728,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} év ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} év ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Végsebesség: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Végsebesség: {LTBLUE}{VELOCITY} {BLACK}Hatótávolság: {LTBLUE}{COMMA} mező +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Sebesség: {LTBLUE}{VELOCITY} {BLACK}Típus: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Sebesség: {LTBLUE}{VELOCITY} {BLACK}Típus: {LTBLUE}{STRING} {BLACK}Hatótávolság: {LTBLUE}{COMMA} mező STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Súly: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teljesítmény: {LTBLUE}{POWER}{BLACK} Végsebesség: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Súly: {LTBLUE}{WEIGHT_SHORT} {BLACK}Teljesítmény: {LTBLUE}{POWER}{BLACK} Végsebesség: {LTBLUE}{VELOCITY} {BLACK}Vonóerő: {LTBLUE}{FORCE} diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 57f570c8b8..a821e88176 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -11,7 +11,7 @@ ##gender karlkyn kvenkyn hvorugkyn -# $Id: icelandic.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: icelandic.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2536,7 +2536,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land í eigu fy STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upphaflegur höfundarréttur {COPYRIGHT} 1995 Chris Sawyer, Öll réttindi áskilin STR_ABOUT_VERSION :{BLACK}OpenTTD útgáfa {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD hópurinn +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD hópurinn # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Vista leik @@ -2925,8 +2925,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Tekur vi STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Sýna lista yfir móttækilegan varning STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Móttekur: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Þessi stöð er með sérleyfi til flutninga í þessum bæ. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} keypti sérleyfi til flutninga í þessum bæ. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Þessi stöð er með sérleyfi til flutninga í þessum bæ. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} keypti sérleyfi til flutninga í þessum bæ. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Einkunn STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Sýna einkunn stöðvar @@ -3149,6 +3149,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Fjarlægja öll STR_GROUP_RENAME_CAPTION :{BLACK}Endurnefna hóp + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Lestaúrval STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nýjir rafdrifnir lestarvagnar @@ -3301,10 +3302,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Segulsvifvagn STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Verð: {CURRENCY_LONG} Þyngd: {WEIGHT_SHORT}{}Hraði: {VELOCITY} Afl: {POWER}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári{}Burðargeta: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Verð: {CURRENCY_LONG} Þyngd: {WEIGHT_SHORT}{}Hámarskhraði: {VELOCITY} Afl: {POWER} Hámarks kraftur: {6:FORCE}{}Running Cost: {4:CURRENCY_LONG}/ári{}Burðargeta: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY}{}Burðargeta: {CARGO_LONG}, {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY}{}Burðargeta: {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY} Drægni: {COMMA} reitir{}Capacity: {CARGO_LONG}, {CARGO_LONG}{}Rekstrarkosnaður: {CURRENCY_LONG} á ári -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY} Drægni: {COMMA} reitir{}Burðargeta: {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Verð: {CURRENCY_LONG} Hámarkshraði: {VELOCITY}{}Burðargeta: {CARGO_LONG}{}Rekstrarkostnaður: {CURRENCY_LONG} á ári # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Endurnýja {STRING} - {STRING} @@ -3422,7 +3420,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} ár ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ár ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Hámarkshraði: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Hámarkshraði: {LTBLUE}{VELOCITY} {BLACK}Drægni: {LTBLUE}{COMMA} reitir STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Þyngd: {LTBLUE}{WEIGHT_SHORT} {BLACK}Afl: {LTBLUE}{POWER}{BLACK} Hámarkshraði: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Þyngd: {LTBLUE}{WEIGHT_SHORT} {BLACK}Afl: {LTBLUE}{POWER}{BLACK} Hámarkshraði: {LTBLUE}{VELOCITY} {BLACK}Hámarks dráttarafl.: {LTBLUE}{FORCE} diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 11b68967d2..54680619bc 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -10,7 +10,7 @@ ##grflangid 0x5a -# $Id: indonesian.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: indonesian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tanah milik Per STR_ABOUT_OPENTTD :{WHITE}Tentang OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hak Cipta asli {COPYRIGHT} 1995 Chris Sawyer, Hak Cipta dilindungi STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Tim OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Tim OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpan Permainan @@ -3108,8 +3108,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Menerima STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Tampilkan daftar kargo yang bisa diterima STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Menerima: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Stasiun memiliki hak transportasi eksklusif di kota ini -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} beli hak transportasi eksklusif di kota ini +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Stasiun memiliki hak transportasi eksklusif di kota ini +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} beli hak transportasi eksklusif di kota ini STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Peringkat STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Tampilkna peringkat dari stasiun @@ -3356,6 +3356,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Jual semua STR_GROUP_RENAME_CAPTION :{BLACK}Ubah nama kelompok + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Kereta Baru STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Kereta listrik baru @@ -3520,10 +3521,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :lokomotif magle STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Biaya: {CURRENCY_LONG} Berat: {WEIGHT_SHORT}{}Kecepatan: {VELOCITY} Daya: {POWER}{}Biaya ops.: {CURRENCY_LONG}/thn{}Kapasitas: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Biaya: {CURRENCY_LONG} Berat: {WEIGHT_SHORT}{}Kecepatan: {VELOCITY} Power: {POWER} Max. T.E.: {6:FORCE}{}Biaya Operasional: {4:CURRENCY_LONG}/yr{}Kapasitas: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Biaya: {CURRENCY_LONG} Kec. Max: {VELOCITY}{}Kapasitas: {CARGO_LONG}, {CARGO_LONG}{}Bea Berjalan: {CURRENCY_LONG}/thn -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Biaya: {CURRENCY_LONG} Kec. Max: {VELOCITY}{}Kapasitas: {CARGO_LONG}{}Bea Berjalan: {CURRENCY_LONG}/thn -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Biaya: {CURRENCY_LONG} Kecepatan Max.: {VELOCITY} Jangkauan: {COMMA} kotak{}Kapasitas: {CARGO_LONG}, {CARGO_LONG}{}Biaya Operasi: {CURRENCY_LONG}/thn -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Biaya: {CURRENCY_LONG} Kecepatan Max.: {VELOCITY} Jangkauan: {COMMA} kotak{}Kapasitas: {CARGO_LONG}{}Biaya Operasi: {CURRENCY_LONG}/thn +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Biaya: {CURRENCY_LONG} Kec. Max: {VELOCITY}{}Kapasitas: {CARGO_LONG}{}Bea Berjalan: {CURRENCY_LONG}/thn # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Ganti {STRING} - {STRING} @@ -3645,7 +3643,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} tahun ( STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} tahun ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Kec. Max: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Kecepatan Max.: {LTBLUE}{VELOCITY} {BLACK}Jangkauan: {LTBLUE}{COMMA} kotak STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Berat: {LTBLUE}{WEIGHT_SHORT} {BLACK}Tenaga: {LTBLUE}{POWER}{BLACK} Kec. Max: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Berat: {LTBLUE}{WEIGHT_SHORT} {BLACK}Tenaga: {LTBLUE}{POWER}{BLACK} Kec. Max: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 47fd96720d..729319b989 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -10,7 +10,7 @@ ##grflangid 0x08 -# $Id: irish.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: irish.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Talamh faoi úi STR_ABOUT_OPENTTD :{WHITE}Maidir le OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Cóipcheart bunaidh {COPYRIGHT} 1995 Chris Sawyer, Gach ceart ar cosaint STR_ABOUT_VERSION :{BLACK}OpenTTD leagan {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 An fhoireann OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 An fhoireann OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sábháil an Cluiche @@ -3112,8 +3112,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Glactar STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Taispeáin liosta den lastas a ghlactar leis STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Glactar le: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tá cearta eisiacha iompair ag an stáisiún seo sa bhaile seo. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{BLACK}Cheannaigh {YELLOW}{COMPANY}{BLACK} cearta eisiacha iompair sa bhaile seo.. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Tá cearta eisiacha iompair ag an stáisiún seo sa bhaile seo. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{BLACK}Cheannaigh {YELLOW}{COMPANY}{BLACK} cearta eisiacha iompair sa bhaile seo.. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Rátálacha STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Taispeáin rátálacha na stáisiún @@ -3360,6 +3360,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Bain gach feith STR_GROUP_RENAME_CAPTION :{BLACK}Athainmnigh grúpa + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Feithiclí Iarnróid Nua STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Feithiclí Iarnróid Leictreacha Nua @@ -3524,10 +3525,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :inneall gluaist STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Costas {CURRENCY_LONG} Meáchan: {WEIGHT_SHORT}{}Luas: {VELOCITY} Cumhacht: {POWER}{}Costas Coinneála {CURRENCY_LONG}/bl{}Toilleadh: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Costas: {CURRENCY_LONG} Meáchan: {WEIGHT_SHORT}{}Luas: {VELOCITY} Cumhacht: {POWER} T.E. uasta: {6:FORCE}{}Costas Coinneála: {4:CURRENCY_LONG}/bl{}Toilleadh: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Costas: {CURRENCY_LONG} Luas Uasta: {VELOCITY}{}Toilleadh: {CARGO_LONG}, {CARGO_LONG}{}Costas Coinneála: {CURRENCY_LONG}/bl -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Costas: {CURRENCY_LONG} Luas Uasta: {VELOCITY}{}Toilleadh: {CARGO_LONG}{}Costas Coinneála: {CURRENCY_LONG}/bl -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Costas: {CURRENCY_LONG} Luas uasta: {VELOCITY} Raon: {COMMA} tíl{}Toilleadh: {CARGO_LONG}, {CARGO_LONG}{}Costas Coinneála: {CURRENCY_LONG}/bl -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Costas: {CURRENCY_LONG} Luas uasta: {VELOCITY} Raon: {COMMA} tíleanna{}Toilleadh: {CARGO_LONG}{}Costas Coinneála: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Costas: {CURRENCY_LONG} Luas Uasta: {VELOCITY}{}Toilleadh: {CARGO_LONG}{}Costas Coinneála: {CURRENCY_LONG}/bl # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Ionadaigh{STRING} - {STRING} @@ -3649,7 +3647,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} {P bhli STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P bhliain bhliain bliana mbliana bliana} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Luas uasta: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Luas uasta: {LTBLUE}{VELOCITY} {BLACK}Raon: {LTBLUE}{COMMA} {P th th th dt t}íl STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Meáchan: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhacht: {LTBLUE}{POWER}{BLACK}Luas uasta: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Meáchan: {LTBLUE}{WEIGHT_SHORT} {BLACK}Cumhacht: {LTBLUE}{POWER}{BLACK} Uas-luas: {LTBLUE}{VELOCITY} {BLACK}T.E. Uasta: {LTBLUE}{FORCE} diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 39f699eca0..7a5bfaa0bf 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -12,7 +12,7 @@ ##case ms mp fs fp -# $Id: italian.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: italian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1396,6 +1396,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Nessuna STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scorrimento con clic sinistro: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Abilita lo scorrimento della mappa trascinandola con il pulsante sinistro del mouse. Questa impostazione è utile quando si utilizza un touch-screen +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Chiudi finestra con clic destro: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Consente di chiudere una finestra facendo clic col pulsante destro al suo interno. Disabilita i suggerimenti attivati al clic col pulsante destro! STR_CONFIG_SETTING_AUTOSAVE :Salvataggi automatici: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Seleziona l'intervallo fra i salvataggi automatici della partita @@ -2719,7 +2721,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno possedu STR_ABOUT_OPENTTD :{WHITE}Informazioni su OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright originale {COPYRIGHT} 1995 Chris Sawyer, Tutti i diritti riservati STR_ABOUT_VERSION :{BLACK}OpenTTD versione {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Il team OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Il team OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salva partita @@ -3144,8 +3146,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accetta STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostra la lista dei carichi accettati STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accetta: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Questa stazione gode di diritti di trasporto esclusivi in questa città. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}La {COMPANY}{BLACK} ha acquistato diritti di trasporto esclusivi in questa città. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Questa stazione gode di diritti di trasporto esclusivi in questa città. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}La {COMPANY}{BLACK} ha acquistato diritti di trasporto esclusivi in questa città. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Valutazione STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostra la valutazione della stazione @@ -3324,11 +3326,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Richiede STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Richiede: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Richiede -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}in attesa -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Richiede: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} in attesa{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING} @@ -3397,6 +3397,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Rimuovi tutti i STR_GROUP_RENAME_CAPTION :{BLACK}Rinomina un gruppo +STR_GROUP_PROFIT_THIS_YEAR :Profitto quest'anno: +STR_GROUP_PROFIT_LAST_YEAR :Profitto anno scorso: +STR_GROUP_OCCUPANCY :Utilizzo corrente: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nuovi veicoli ferroviari STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nuovi veicoli ferroviari elettrici @@ -3428,6 +3433,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Tutti i tipi di STR_PURCHASE_INFO_ALL_BUT :Tutto tranne {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Sforzo di trazione massimo: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Autonomia: {GOLD}{COMMA} riquadr{P o i} +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo di aeromobile: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Elenco di selezione dei veicoli ferroviari - fare clic su un veicolo per informazioni. CTRL+clic mostra/nasconde il tipo di veicolo STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Elenco selezione automezzi - fare clic su un veicolo per informazioni. CTRL+clic mostra/nasconde il tipo di automezzo @@ -3561,10 +3567,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}motrice ma STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Costo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocità: {VELOCITY} Potenza: {POWER}{}Costo d'esercizio: {CURRENCY_LONG}/anno{}Capacità: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Costo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocità: {VELOCITY} Potenza: {POWER}{} S.T. max.: {6:FORCE}{}Costo d'esercizio: {4:CURRENCY_LONG}/anno{}Capacità: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocità max.: {VELOCITY}{}Capacità: {CARGO_LONG}, {CARGO_LONG}{}Costo d'esercizio: {CURRENCY_LONG}/anno -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocità max.: {VELOCITY}{}Capacità: {CARGO_LONG}{}Costo d'esercizio: {CURRENCY_LONG}/anno -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Costo: {CURRENCY_LONG} Velocità max.: {VELOCITY} Autonomia: {COMMA} riquadr{P o i}{}Capacità: {CARGO_LONG}, {CARGO_LONG}{}Costo d'esercizio: {CURRENCY_LONG}/anno -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocità max.: {VELOCITY} Autonomia: {COMMA} riquadr{P o i}{}Capacità: {CARGO_LONG}{}Costo d'esercizio: {CURRENCY_LONG}/anno +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocità max.: {VELOCITY}{}Capacità: {CARGO_LONG}{}Costo d'esercizio: {CURRENCY_LONG}/anno +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocità max.: {VELOCITY}{}Tipo aeromobile: {STRING}{}Capacità: {CARGO_LONG}, {CARGO_LONG}{}Costo d'esercizio: {CURRENCY_LONG}/anno +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocità max.: {VELOCITY}{}Tipo aeromobile: {STRING}{}Capacità: {CARGO_LONG}{}Costo d'esercizio: {CURRENCY_LONG}/anno +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocità max.: {VELOCITY}{}Tipo aeromobile: {STRING} Autonomia: {COMMA} riquadr{P o i}{}Capacità: {CARGO_LONG}, {CARGO_LONG}{}Costo d'esercizio: {CURRENCY_LONG}/anno +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocità max.: {VELOCITY}{}Tipo aeromobile: {STRING} Autonomia: {COMMA} riquadr{P o i}{}Capacità: {CARGO_LONG}{}Costo d'esercizio: {CURRENCY_LONG}/anno # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Rimpiazza {STRING} - {STRING} @@ -3687,7 +3694,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} ann{P o STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ann{P o i} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocità max.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocità max.: {LTBLUE}{VELOCITY} {BLACK}Autonomia: {LTBLUE}{COMMA} riquadr{P o i} +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Velocità max.: {LTBLUE}{VELOCITY} {BLACK}Tipo aeromobile: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}elocità max.: {LTBLUE}{VELOCITY} {BLACK}Tipo aeromobile: {LTBLUE}{STRING} {BLACK}Autonomia: {LTBLUE}{COMMA} riquadr{P o i} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potenza: {LTBLUE}{POWER}{BLACK} Velocità max.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potenza: {LTBLUE}{POWER}{BLACK} Velocità max.: {LTBLUE}{VELOCITY} {BLACK}S.T. max.: {LTBLUE}{FORCE} diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 942faa27c9..c2bfbddd38 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -10,7 +10,7 @@ ##grflangid 0x39 -# $Id: japanese.txt 27865 2017-05-03 20:43:22Z frosch $ +# $Id: japanese.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :社有地 STR_ABOUT_OPENTTD :{WHITE}OpenTTDについて STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}オリジナル版権{COPYRIGHT} 1995 Chris Sawyer All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD バージョン {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ゲームを保存 @@ -3113,8 +3113,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}受入 STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}受入れる貨物のリストを表示します STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}受入れ貨物: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}この停留施設は街の独占輸送契約の恩恵下にあります -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK}はこの街と独占輸送契約を締結しています +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}この停留施設は街の独占輸送契約の恩恵下にあります +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK}はこの街と独占輸送契約を締結しています STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}評価 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}停留施設の評価を表示します @@ -3293,8 +3293,7 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}必要 STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}必要資源: {YELLOW}{STRING}{STRING}、{STRING}{STRING}、{STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES : {BLACK}必要物資 -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT : {YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES : {BLACK}必要物資: ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}生産品: {YELLOW}{STRING}{STRING} @@ -3363,6 +3362,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :全輸送機器 STR_GROUP_RENAME_CAPTION :{BLACK}グループ名を変更 + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :新規機関車(非電化) STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :新規機関車(電化)/電車 @@ -3527,10 +3527,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :リニア列車 STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}価格: {CURRENCY_LONG} 重量: {WEIGHT_SHORT}{}最高速度: {VELOCITY}{}出力: {POWER}{}運用費: {CURRENCY_LONG}/年{}収容量: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}価格: {CURRENCY_LONG} 重量: {WEIGHT_SHORT}{}最高速度: {VELOCITY} 出力: {POWER} 最大牽引力: {6:FORCE}{}運用費: {4:CURRENCY_LONG}/年{}収容量 {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}価格: {CURRENCY_LONG} 最高速度: {VELOCITY}{}収容量: {CARGO_LONG}、{CARGO_LONG}{}運用費: {CURRENCY_LONG}/年 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}価格: {CURRENCY_LONG} 最高速度: {VELOCITY}{}収容量: {CARGO_LONG}{}運用費: {CURRENCY_LONG}/年 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}価格: {CURRENCY_LONG} 最高速度: {VELOCITY} 航続距離: {COMMA}タイル{}収容量: {CARGO_LONG}、{CARGO_LONG}{}運用費: {CURRENCY_LONG}/年 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}価格: {CURRENCY_LONG} 最高速度: {VELOCITY} 航続距離: {COMMA}タイル{}収容量: {CARGO_LONG}{}運用費: {CURRENCY_LONG}/年 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}価格: {CURRENCY_LONG} 最高速度: {VELOCITY}{}収容量: {CARGO_LONG}{}運用費: {CURRENCY_LONG}/年 # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING}の自動置換 - {STRING} @@ -3653,7 +3650,6 @@ STR_VEHICLE_INFO_AGE :{COMMA}年({COM STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA}年({COMMA}年) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最高速度: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}最高速度: {LTBLUE}{VELOCITY} {BLACK}航続距離: {LTBLUE}{COMMA}タイル STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}重量: {LTBLUE}{WEIGHT_SHORT} {BLACK}出力: {LTBLUE}{POWER}{BLACK} 最高速度: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}重量: {LTBLUE}{WEIGHT_SHORT} {BLACK}出力: {LTBLUE}{POWER}{BLACK} 最高速度: {LTBLUE}{VELOCITY} {BLACK}最大牽引力: {LTBLUE}{FORCE} diff --git a/src/lang/korean.txt b/src/lang/korean.txt index aba437dc84..a35f1edc8d 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -11,7 +11,7 @@ ##gender m f -# $Id: korean.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: korean.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :끄기 STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :마우스 왼쪽 버튼으로 스크롤: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :왼쪽 마우스 버튼을 드래그하여 지도를 스크롤 할 수 있도록 합니다. 터치 스크린 환경에서 이 설정을 켜면 매우 유용합니다. +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :오른쪽 클릭으로 창 닫기: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :창 내부를 오른쪽 클릭하여 창을 닫습니다. 오른쪽 클릭으로 도움말 표시 설정을 해제해야 합니다! STR_CONFIG_SETTING_AUTOSAVE :자동 저장: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :게임을 자동으로 저장할 간격을 선택하십시오. @@ -2383,7 +2385,7 @@ STR_BRIDGE_NAME_GIRDER_STEEL :강철 거더 STR_BRIDGE_NAME_CANTILEVER_STEEL :강철 캔틸레버교 STR_BRIDGE_NAME_SUSPENSION_CONCRETE :콘크리트 현수교 STR_BRIDGE_NAME_WOODEN :나무 다리 -STR_BRIDGE_NAME_CONCRETE :콘트리트교 +STR_BRIDGE_NAME_CONCRETE :콘크리트교 STR_BRIDGE_NAME_TUBULAR_STEEL :강철 원통형 다리 STR_BRIDGE_TUBULAR_SILICON :실리콘 원통형 다리 @@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :회사 소유 STR_ABOUT_OPENTTD :{WHITE}OpenTTD에 대해서 STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD 버전 {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD 개발팀 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 개발팀 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}게임 저장 @@ -3115,8 +3117,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}받음 STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}받는 화물의 목록 표시 STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}받음: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}이 역은 도시의 수송권을 독점하고 있는 역입니다. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} 이(가) 이 도시의 수송 독점권을 구매하였습니다. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}이 역은 도시의 수송권을 독점하고 있는 역입니다. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} 이(가) 이 도시의 수송 독점권을 구매하였습니다. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}등급 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}역의 등급 표시 @@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}필요 STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}필요함: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}받는 화물 -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}대기중 -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}받는 화물: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} 대기중{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}생산: {YELLOW}{STRING}{STRING} @@ -3368,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :모든 차량 STR_GROUP_RENAME_CAPTION :{BLACK}그룹 이름 설정 +STR_GROUP_PROFIT_THIS_YEAR :올해 수익: +STR_GROUP_PROFIT_LAST_YEAR :작년 수익: +STR_GROUP_OCCUPANCY :현재 사용량: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :새 열차 STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :새 전기 열차 @@ -3399,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :모든 화물 STR_PURCHASE_INFO_ALL_BUT :{CARGO_LIST} 이외의 모든 화물 STR_PURCHASE_INFO_MAX_TE :{BLACK}최고 견인력: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}항속거리: {GOLD}{COMMA} 칸 +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}항공기 종류: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}열차 차량 구매 목록입니다. 차량의 정보를 보려면 클릭하세요. CTRL + 클릭하면 해당 차량을 숨김/표시 처리할 수 있습니다. STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}자동차/전차 구매 목록입니다. 차량의 정보를 보려면 클릭하세요. CTRL + 클릭하면 해당 차량을 숨김/표시 처리할 수 있습니다. @@ -3532,10 +3538,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}자기부 STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}가격: {CURRENCY_LONG} 무게: {WEIGHT_SHORT}{}속력: {VELOCITY} 힘: {POWER}{}유지비: {CURRENCY_LONG}/년{}수송량: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}가격: {CURRENCY_LONG} 무게: {WEIGHT_SHORT}{}속력: {VELOCITY} 힘: {POWER} 최대 견인력: {6:FORCE}{}유지비: {4:CURRENCY_LONG}/년{}수송량: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고속력: {VELOCITY}{}수송량: {CARGO_LONG}, {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고속력: {VELOCITY}{}수송량: {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY} 항속거리: {COMMA} 칸{}수용량: {CARGO_LONG}, {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY} 항속거리: {COMMA} 칸{}수용량: {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY}{}수송량: {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY}{}항공기 종류: {STRING}{}수송량: {CARGO_LONG}, {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY}{}항공기 종류: {STRING}{}수송량: {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY}{}항공기 종류: {STRING} 항속거리: {COMMA}칸{}수송량: {CARGO_LONG}, {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}가격: {CURRENCY_LONG} 최고 속력: {VELOCITY}{}항공기 종류: {STRING} 항속거리: {COMMA}칸{}수송량: {CARGO_LONG}{}유지비: {CURRENCY_LONG}/년 # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING} 교체 - {STRING} @@ -3658,7 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA}년 ({CO STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA}년 ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}최고 속력: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}최고 속력: {LTBLUE}{VELOCITY} {BLACK}항속거리: {LTBLUE}{COMMA} 칸 +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}최고 속력: {LTBLUE}{VELOCITY} {BLACK}항공기 종류: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}최고 속력: {LTBLUE}{VELOCITY} {BLACK}항공기 종류: {LTBLUE}{STRING} {BLACK}항속거리: {LTBLUE}{COMMA}칸 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}무게: {LTBLUE}{WEIGHT_SHORT} {BLACK}힘: {LTBLUE}{POWER}{BLACK} 최고 속력: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}무게: {LTBLUE}{WEIGHT_SHORT} {BLACK}힘: {LTBLUE}{POWER}{BLACK} 최고 속력: {LTBLUE}{VELOCITY} {BLACK}최고 견인력: {LTBLUE}{FORCE} diff --git a/src/lang/latin.txt b/src/lang/latin.txt index d9b1bfd46f..1485d00c65 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -12,7 +12,7 @@ ##case gen acc abl dat -# $Id: latin.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: latin.txt 27953 2017-12-27 21:55:30Z frosch $ # 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. @@ -1560,6 +1560,8 @@ 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_RIGHT_MOUSE_WND_CLOSE :Claudere fenestras globulo muris dextro: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Facit ut globulus muris dexter fenestras claudat. Cave: hac electa, non apparent nuntia adiuvantia globulo dextro. STR_CONFIG_SETTING_AUTOSAVE :Servare automatice: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Eligere crebritatem automatice ludum servandi @@ -3316,8 +3318,8 @@ 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_EXCLUSIVE_RIGHTS_SELF :{BLACK}Haec statio monopolio benefit. +STR_STATION_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 @@ -3496,11 +3498,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Postulat STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Postulat: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Postulat -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING.acc} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}manet -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING.acc}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Postulat: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING.acc}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} manet{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Efficit: {YELLOW}{STRING.acc}{STRING} @@ -3569,6 +3569,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Removere omnia STR_GROUP_RENAME_CAPTION :{BLACK}Renominare gregem +STR_GROUP_PROFIT_THIS_YEAR :Lucrum huius anni: +STR_GROUP_PROFIT_LAST_YEAR :Lucrum anni prioris: +STR_GROUP_OCCUPANCY :Usus currens: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Vehicula Ferriviaria Nova STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Vehicula Ferriviaria Electrica Nova @@ -3600,6 +3605,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Omnibus onerum 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_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Typus aeroplani: {GOLD}{STRING} 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 @@ -3733,10 +3739,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}hamaxam ma 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 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY}{}Capacitas: {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY}{}Typus Aeroplani: {STRING}{}Capacitas: {CARGO_LONG}, {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY}{}Typus Aeroplani: {STRING}{}Capacitas: {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY}{}Typus Aeroplani: {STRING} Max. Distantia Volatus: {COMMA} tegulas{}Capacitas: {CARGO_LONG}, {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Pretium: {CURRENCY_LONG} Velocitas Maxima: {VELOCITY}{}Typus Aeroplani: {STRING} Max. Distantia Volatus: {COMMA} tegulas{}Capacitas: {CARGO_LONG}{}Pretium Operandi: {CURRENCY_LONG} per annum # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Mutare {STRING} - {STRING} @@ -3859,7 +3866,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} ann{P u 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_MAX_SPEED_TYPE :{BLACK}Velocitas maxima: {LTBLUE}{VELOCITY} {BLACK}Typus aeroplani: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Velocitas maxima: {LTBLUE}{VELOCITY} {BLACK}Typus aeroplani: {LTBLUE}{STRING} {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} diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 7dc19132b7..fdc3a0dbe1 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -12,7 +12,7 @@ ##case kas -# $Id: latvian.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: latvian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2628,7 +2628,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Uzņēmumam pie STR_ABOUT_OPENTTD :{WHITE}Par OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oriģināla autortiesības {COPYRIGHT} 1995 Kriss Sojers. Visas tiesības paturētas STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD darba grupa +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD darba grupa # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Saglabāt spēli @@ -3046,8 +3046,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Pieņem STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Rādīt pieņemamo kravu sarakstu STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Pieņem: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Šai stacijai pieder izņēmuma pārvadājumu tiesības šajā pilsētā. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ir nopirktas izņēmuma pārvadājumu tiesības šajā pilsētā. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Šai stacijai pieder izņēmuma pārvadājumu tiesības šajā pilsētā. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ir nopirktas izņēmuma pārvadājumu tiesības šajā pilsētā. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vērtējumi STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Rādīt stacijas vērtējumus @@ -3293,6 +3293,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Novākt visus t STR_GROUP_RENAME_CAPTION :{BLACK}Pārdēvēt grupu + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Jauni dzelzceļa transportlīdzekļi STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Jauni elektrificētā dzelzceļa transportlīdzekļi @@ -3457,10 +3458,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magleva lokomot STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Svars: {WEIGHT_SHORT}{}Ātrums: {VELOCITY} Jauda: {POWER}{}Kārtējās izmaksas: {CURRENCY_LONG} gadā{}Ietilpība: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Svars: {WEIGHT_SHORT}{}Ātrums: {VELOCITY} Jauda: {POWER} Maks. spēks: {6:FORCE}{}Kārtējās izmaksas: {4:CURRENCY_LONG} gadā{}Ietilpība: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Maks. ātrums: {VELOCITY}{}Ietilpība: {CARGO_LONG}, {CARGO_LONG}{}Kārtējās izmaksas: {CURRENCY_LONG} gadā -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Maks. ātrums: {VELOCITY}{}Ietilpība: {CARGO_LONG}{}Kārtējās izmaksas: {CURRENCY_LONG} gadā -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cena: {CURRENCY_LONG} Maks. ātrums: {VELOCITY} Apgabals: {COMMA} lauciņi{}Ietilpība: {CARGO_LONG}, {CARGO_LONG}{}Kārtējās izmaksas: {CURRENCY_LONG} gadā -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Maks. ātrums: {VELOCITY} Apgabals: {COMMA} lauciņi{}Ietilpība: {CARGO_LONG}{} Kārtējās izmaksas : {CURRENCY_LONG} gadā +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Maks. ātrums: {VELOCITY}{}Ietilpība: {CARGO_LONG}{}Kārtējās izmaksas: {CURRENCY_LONG} gadā # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Nomainīt {STRING} - {STRING} @@ -3580,7 +3578,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} gad{P s STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} gad{P s i u} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. ātrums: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks. ātrums: {LTBLUE}{VELOCITY} {BLACK}Apgabals: {LTBLUE}{COMMA} flīzes STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Svars: {LTBLUE}{WEIGHT_SHORT} {BLACK}Jauda: {LTBLUE}{POWER}{BLACK} Maks. ātrums: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Svars: {LTBLUE}{WEIGHT_SHORT} {BLACK}Jauda: {LTBLUE}{POWER}{BLACK} Maks. ātrums: {LTBLUE}{VELOCITY} {BLACK}Maks. spēks: {LTBLUE}{FORCE} diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 4436f0fda2..00cbe5e473 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 27865 2017-05-03 20:43:22Z frosch $ +# $Id: lithuanian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2906,7 +2906,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanijos žem STR_ABOUT_OPENTTD :{WHITE}Apie OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pradinės versijos teisės priklauso {COPYRIGHT} 1995 Chris Sawyer, Visos teisės saugomos STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD komanda +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD komanda # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Išsaugoti žaidimą @@ -3331,8 +3331,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Priima STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Rodyti priimamų krovinių sąrašą STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Priima: {WHITE}{CARGO_LIST.ka} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Šiai stotelei priklauso išskirtinės šio miesto pervežimo teisės -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} įsigijo išskirtines pervežimo teises šiame mieste. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Šiai stotelei priklauso išskirtinės šio miesto pervežimo teisės +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} įsigijo išskirtines pervežimo teises šiame mieste. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Reitingai STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Rodyti stoties reitingus @@ -3579,6 +3579,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Iškelti visas STR_GROUP_RENAME_CAPTION :{BLACK}Pervadinti grupę + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nauji lokomotyvai STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nauji elektriniai lokomotyvai @@ -3779,10 +3780,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.kur :„Maglev“ lo STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kaina: {CURRENCY_LONG} Svoris: {WEIGHT_SHORT}{}Greitis: {VELOCITY} Galia: {POWER}{}Eksploatavimo išlaidos: {CURRENCY_LONG} per metus{}Talpa: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kaina: {CURRENCY_LONG} Svoris: {WEIGHT_SHORT}{}Greitis: {VELOCITY} Galia: {POWER} Maks. T.E.: {6:FORCE}{}Einamosios išlaidos: {4:CURRENCY_LONG}/yr{}Talpa: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kaina: {CURRENCY_LONG} Didž. greitis: {VELOCITY}{}Talpa: {CARGO_LONG}, {CARGO_LONG}{}Eksploatavimo išlaidos: {CURRENCY_LONG} per metus -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kaina: {CURRENCY_LONG} Didž. Greitis: {VELOCITY}{}Talpa: {CARGO_LONG}{}Eksploatacijos išlaidos: {CURRENCY_LONG}/metams -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kaina: {CURRENCY_LONG} Didž. greitis: {VELOCITY} Nuotolis: {COMMA} langeliai{}Talpa: {CARGO_LONG}, {CARGO_LONG}{}Eksploatavimo išlaidos: {CURRENCY_LONG} per metus -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kaina: {CURRENCY_LONG} Didž. greitis: {VELOCITY} Nuotolis: {COMMA} langeliai{}Talpa: {CARGO_LONG}{}Eksploatavimo išlaidos: {CURRENCY_LONG} per metus +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Kaina: {CURRENCY_LONG} Didž. Greitis: {VELOCITY}{}Talpa: {CARGO_LONG}{}Eksploatacijos išlaidos: {CURRENCY_LONG}/metams # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Keisti tr. priemones {STRING} - {STRING} @@ -3906,7 +3904,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} met{P a STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} met{P ai ai ų} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Didž. greitis: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Didž. greitis: {LTBLUE}{VELOCITY} {BLACK}Nuotolis: {LTBLUE}{COMMA} langeliai STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Svoris: {LTBLUE}{WEIGHT_SHORT} {BLACK}Galia: {LTBLUE}{POWER}{BLACK} Didž. greitis: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Svoris: {LTBLUE}{WEIGHT_SHORT} {BLACK}Galia: {LTBLUE}{POWER}{BLACK} Didž. greitis: {LTBLUE}{VELOCITY} {BLACK}Didž. traukos jėga: {LTBLUE}{FORCE} diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 1c54347d34..f7288ad7e4 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -10,7 +10,7 @@ ##grflangid 0x23 -# $Id: luxembourgish.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: luxembourgish.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Aus STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Lénksklickscroll: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Schalt d'Scrollen vun der Kaart un, wann se mat der lénker Maustast gezunn gëtt +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fënster mat rietsem Mausklick zouman: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Mécht eng Fenster mat engem Rietsklick zou, wann een an d'Fënster klickt. Schalt Tooltips aus déi per Rietsklick gemet ginn! STR_CONFIG_SETTING_AUTOSAVE :Autospäicheren: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Setz den Interval tëschend automateschen Späicherstänn @@ -2689,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land am Firmenb STR_ABOUT_OPENTTD :{WHITE}Iwwert OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original Copyright {COPYRIGHT} 1995 Chris Sawyer, All Rechter virbehalen STR_ABOUT_VERSION :{BLACK}OpenTTD Versioun {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 D'OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 D'OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spill späicheren @@ -3114,8 +3116,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Akzepté STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Weis d'Lëscht vun den akzptéierten Wueren STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Akzeptéiert: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Des Statioun huet exklusiv Transportrechter an deser Stad -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} huet exklusiv Transportrechter an deser Stad kaf. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Des Statioun huet exklusiv Transportrechter an deser Stad +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} huet exklusiv Transportrechter an deser Stad kaf. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Bewäertungen STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Weis d'Statiounsbewäertungen @@ -3294,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Brauch: STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Brauch: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Brauch -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}um waarden -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Brauch: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} um waarden{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produzéiert: {YELLOW}{STRING}{STRING} @@ -3367,6 +3367,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :All Gefierer ew STR_GROUP_RENAME_CAPTION :{BLACK}Eng Grupp ëmbenennen +STR_GROUP_PROFIT_THIS_YEAR :Profit dëst Joer: +STR_GROUP_PROFIT_LAST_YEAR :Profit lescht Joer: +STR_GROUP_OCCUPANCY :Aktuell Benotzung: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nei Zich STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nei Elektrozich @@ -3398,6 +3403,7 @@ STR_PURCHASE_INFO_ALL_TYPES :All Wuerentyp STR_PURCHASE_INFO_ALL_BUT :Alles ausser {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Zéikraaft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Distanz: {GOLD}{COMMA} Felder +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Fliger Typ: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Zuchlëscht - klick op en Zuch fir Informatiounen. Ctrl+Klick fir tëscht dem Verstoppen hin an hier ze sprangen STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Stroossegefierlëscht - klick op en Gefier fir Informatiounen. Ctrl+Klick fir tëscht dem Verstoppen hin an hier ze sprangen @@ -3531,10 +3537,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Magnéitbunnlok STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Käschten: {CURRENCY_LONG} Gewiicht: {WEIGHT_SHORT}{}Geschwindegkeet: {VELOCITY} Kraaft: {POWER}{}Betribskäschten {CURRENCY_LONG}/Jr{}Kapazitéit: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Käschten: {CURRENCY_LONG} Gewicht: {WEIGHT_SHORT}{}Geschw.: {VELOCITY} Kraaft: {POWER} Max. T.E.: {6:FORCE}{}Betribskäschten: {4:CURRENCY_LONG}/Jr{}Kapazitéit: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Käschten: {CURRENCY_LONG} Max. Geschwindegkeet: {VELOCITY}{}Kapazitéit: {CARGO_LONG}, {CARGO_LONG}{}Betribskäschten {CURRENCY_LONG}/Joer -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Käschten: {CURRENCY_LONG} Max. Geschwindegkeet: {VELOCITY}{}Kapazitéit: {CARGO_LONG}{}Betribskäschten: {CURRENCY_LONG}/Joer -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Käschten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY} Distanz: {COMMA} Felder{}Kapazitéit: {CARGO_LONG}, {CARGO_LONG}{}Betribskäschten: {CURRENCY_LONG}/Jr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Käschten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY} Distanz: {COMMA} Felder{}Kapazitéit: {CARGO_LONG}{}Betribskäschten: {CURRENCY_LONG}/Jr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Käschten: {CURRENCY_LONG} Max. Geschwindegkeet: {VELOCITY}{}Kapazitéit: {CARGO_LONG}{}Betribskäschten: {CURRENCY_LONG}/Jr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Käschten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY}{}Fliger Typ: {STRING}{}Kapazitéit: {CARGO_LONG}, {CARGO_LONG}{}Betribskäschten: {CURRENCY_LONG}/Jr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Käschten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY}{}Fliger Typ: {STRING}{}Kapazitéit: {CARGO_LONG}{}Betribskäschten: {CURRENCY_LONG}/Jr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Käschten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY}{}Fliger Typ: {STRING} Reeschwäit: {COMMA} Felder{}Kapazitéit: {CARGO_LONG}, {CARGO_LONG}{}Betribskäschten: {CURRENCY_LONG}/Jr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Käschten: {CURRENCY_LONG} Max. Geschw.: {VELOCITY}{}Fliger Typ: {STRING} Reechwäit: {COMMA} Felder{}Kapazitéit: {CARGO_LONG}{}Betribskäschten: {CURRENCY_LONG}/Jr # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Ersetz {STRING} - {STRING} @@ -3657,7 +3664,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} Joer ({ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} Joer ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. Geschwindegkeet: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. Geschw.: {LTBLUE}{VELOCITY} {BLACK}Distanz: {LTBLUE}{COMMA} Felder +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. Geschw.: {LTBLUE}{VELOCITY} {BLACK}Fliger Typ: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. Geschw.: {LTBLUE}{VELOCITY} {BLACK}Fliger Typ: {LTBLUE}{STRING} {BLACK}Reechwäit: {LTBLUE}{COMMA} Felder STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Gewiicht: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraaft: {LTBLUE}{POWER}{BLACK} Max. Geschwindegkeet: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Gewiicht: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraaft: {LTBLUE}{POWER}{BLACK} Max. Geschwindegkeet: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/malay.txt b/src/lang/malay.txt index dca4061f37..4d362fc8c8 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -10,7 +10,7 @@ ##grflangid 0x3c -# $Id: malay.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: malay.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2406,7 +2406,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tanah dimiliki STR_ABOUT_OPENTTD :{WHITE}Tentang OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hakcipta Asal {COPYRIGHT} 1995 Chris Sawyer, Hakcipta terpelihara STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpankan Permainan @@ -2957,7 +2957,7 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Memerluk STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Memerlukan: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Diperlukan +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Diperlukan: ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Mengeluarkan: {YELLOW}{STRING}{STRING} @@ -3024,6 +3024,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Buang semua ken STR_GROUP_RENAME_CAPTION :{BLACK}Namakan semula kenderaan + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Keretapi Baru STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Keretapi Elektrik Baru @@ -3188,10 +3189,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :keretapi maglev STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kos: {CURRENCY_LONG} Berat: {WEIGHT_SHORT}{}Kelajuan: {VELOCITY} Kuasa: {POWER}{}Kos Pengendalian: {CURRENCY_LONG}/thn{}Kapasiti: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kos: {CURRENCY_LONG} Berat: {WEIGHT_SHORT}{}Kelajuan: {VELOCITY} Kuasa: {POWER} Maks. E.K.: {6:FORCE}{}Kos Pengendalian: {4:CURRENCY_LONG}/thn{}Kapasiti: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kos: {CURRENCY_LONG} Kelajuan Maks.: {VELOCITY}{}Kapasiti: {CARGO_LONG}, {CARGO_LONG}{}Kos Pengendalian: {CURRENCY_LONG}/thn -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kos: {CURRENCY_LONG} Kelajuan Maks.: {VELOCITY}{}Kapasiti: {CARGO_LONG}{}Kos Pengendalian: {CURRENCY_LONG}/thn -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kos: {CURRENCY_LONG}Kelajuan Maks.: {VELOCITY} Jarak: {COMMA} petak{}Kapasiti: {CARGO_LONG}, {CARGO_LONG}{}Kos berjalan: {CURRENCY_LONG}/thn -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kos: {CURRENCY_LONG} Kelajuan Maks.: {VELOCITY} Jarak: {COMMA} petak{}Kapasiti: {CARGO_LONG}{}Kos berjalan: {CURRENCY_LONG}/thn +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Kos: {CURRENCY_LONG} Kelajuan Maks.: {VELOCITY}{}Kapasiti: {CARGO_LONG}{}Kos Pengendalian: {CURRENCY_LONG}/thn # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Gantikan {STRING} - {STRING} @@ -3306,7 +3304,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} tahun ( STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} tahun ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Kelajuan Maks.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Kelajuan Maks.: {LTBLUE}{VELOCITY} {BLACK}Jarak: {LTBLUE}{COMMA} petak STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Berat: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kuasa: {LTBLUE}{POWER}{BLACK} Kelajuan Maks.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Berat: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kuasa: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} {BLACK}T.E. Maks.: {LTBLUE}{FORCE} diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 0b1dbe1989..422e7ee569 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -12,7 +12,7 @@ ##case small -# $Id: norwegian_bokmal.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: norwegian_bokmal.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1375,6 +1375,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Av STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstre-klikk rulling: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Tillat rulling av kartet ved å dra det med den venstre museknappen. Dette er spesielt nyttig når du bruker en berøringsskjerm +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Lukk vinduet med høyreklikk: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Lukker et vindu ved å høyreklikke i det. Deaktiverer verktøytipset med høyreklikk! STR_CONFIG_SETTING_AUTOSAVE :Autolagring: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Velg intervall mellom automatiske lagringer av spillet @@ -2693,7 +2695,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firma-eid lando STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opprinnelig opphavsbeskyttet {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheter reservert STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spill @@ -3118,8 +3120,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Godtar STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Vis liste over godtatte varer STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Godtar: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Denne stasjonen har eksklusive transportrettigheter i denne byen. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kjøpte eksklusive transportrettigheter i denne byen. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Denne stasjonen har eksklusive transportrettigheter i denne byen. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} kjøpte eksklusive transportrettigheter i denne byen. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vurderinger STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vis stasjonsvurdering @@ -3279,8 +3281,8 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC # Industry directory STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industrier STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ingen - -STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}{NBSP}% transportert) -STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}{NBSP}%/{COMMA}{NBSP}% transportert) +STR_INDUSTRY_DIRECTORY_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}){YELLOW} ({COMMA}% transportert) +STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{STRING}/{CARGO_LONG}{STRING}){YELLOW} ({COMMA}%/{COMMA}% transportert) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrinavn - klikk på navn for å gå til industri. Ctrl+klikk åpner et nytt tilleggsvindu over industrien @@ -3298,11 +3300,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Trenger: STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Trenger: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Krever -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}venter -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Krever: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} venter{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produserer: {YELLOW}{STRING}{STRING} @@ -3371,6 +3371,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle kjø STR_GROUP_RENAME_CAPTION :{BLACK}Endre navn på gruppe +STR_GROUP_PROFIT_THIS_YEAR :Profitt i år: +STR_GROUP_PROFIT_LAST_YEAR :Profitt i fjor: +STR_GROUP_OCCUPANCY :Gjeldende bruk: +STR_GROUP_OCCUPANCY_VALUE :{NUM} % + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nye tog/vogner for jernbane STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nye tog/vogner for elektrisk jernbane @@ -3402,6 +3407,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Alle varetyper STR_PURCHASE_INFO_ALL_BUT :Alt utenom {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks trekkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rekkevidde: {GOLD}{COMMA} ruter +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Flytype: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Liste over tog/vogner - klikk på tog/vogn for mer informasjon. Ctrl+klikk for å skjule/vise denne typen STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liste over kjøretøy - klikk på kjøretøy for mer informasjon. Ctrl+klikk for å skjule/vise kjøretøytypen @@ -3535,10 +3541,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=neuter}magle STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostnad: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Hastighet: {VELOCITY} Kraft: {POWER}{}Driftskostnader: {CURRENCY_LONG}/år{}Kapasitet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kostnad: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Hastighet: {VELOCITY} Kraft: {POWER} Maks trekkraft: {6:FORCE}{}Vedlikehold: {4:CURRENCY_LONG}/år{}Kapasitet: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks hastighet: {VELOCITY}{}Kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnader: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks hastighet: {VELOCITY}{}Kapasitet: {CARGO_LONG}{}Driftskostnader: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostnad: {CURRENCY_LONG} Maks hastighet: {VELOCITY} Rekkevidde: {COMMA} ruter{}Kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks hastighet: {VELOCITY} Rekkevidde: {COMMA} ruter{}Kapasitet: {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks hastighet: {VELOCITY}{}Kapasitet: {CARGO_LONG}{}Driftskostnader: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks. hastighet: {VELOCITY}{}Flytype: {STRING}{}Kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnader: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks. hastighet: {VELOCITY}{}Flytype: {STRING}{}Kapasitet: {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks. hastighet: {VELOCITY}{}Flytype: {STRING} Rekkevidde: {COMMA} ruter{}kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnader: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks. hastighet: {VELOCITY}{}Flytype: {STRING} Rekkevidde: {COMMA} ruter{}Kapasitet: {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Erstatte {STRING} - {STRING} @@ -3661,7 +3668,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} år ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks hastighet: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks hastighet: {LTBLUE}{VELOCITY} {BLACK}Rekkevidde: {LTBLUE}{COMMA} ruter +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maks. hastighet: {LTBLUE}{VELOCITY} {BLACK}Flytype: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Maks. hastighet: {LTBLUE}{VELOCITY} {BLACK}Flytype: {LTBLUE}{STRING} {BLACK}Rekkevidde: {LTBLUE}{COMMA} ruter STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks hastighet: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks hastighet: {LTBLUE}{VELOCITY} {BLACK}Maks trekkraft: {LTBLUE}{FORCE} diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 714eb2aa5e..96b00c9c88 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -12,7 +12,7 @@ ##case small -# $Id: norwegian_nynorsk.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: norwegian_nynorsk.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2608,7 +2608,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Feltet eigast a STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opphaveleg opphavsbeskytta av {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheiter reservert STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV}. Oversett til nynorsk av Thor Morten Skogrand med fleire. -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spel @@ -3029,8 +3029,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aksepter STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Syne liste over godtekne varer STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Godtek: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Eigaren av stasjonen har eksklusive transportrettar i den her byen. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} har kjøp eksklusive transportrettar i byen. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Eigaren av stasjonen har eksklusive transportrettar i den her byen. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} har kjøp eksklusive transportrettar i byen. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vurderingar STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Syne stasjonsvurdering @@ -3277,6 +3277,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle køy STR_GROUP_RENAME_CAPTION :{BLACK}Gje nytt namn til ei gruppe + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nye tog/vogner for jernbane STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nytt elektrisk tog @@ -3441,10 +3442,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev-lokomoti STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostnad: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Hastigheit: {VELOCITY} Kraft: {POWER}{}Driftskostnader: {CURRENCY_LONG}/år{}Kapasitet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Pris: {CURRENCY_LONG} Vekt: {WEIGHT_SHORT}{}Hastigheit: {VELOCITY} Kraft: {POWER} Maks. trekkraft: {6:FORCE}{}Driftskostnad: {4:CURRENCY_LONG}/yr{}Kapasitet: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hastigheit: {VELOCITY}{}Kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hastigheit: {VELOCITY}{}Kapasitet: {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostnad: {CURRENCY_LONG} Maks. fart: {VELOCITY} Rekkevidde: {COMMA} ruter{}Kapasitet: {CARGO_LONG}, {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maks. fart: {VELOCITY} Rekkevidde: {COMMA} ruter{}Kapasitet: {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hastigheit: {VELOCITY}{}Kapasitet: {CARGO_LONG}{}Driftskostnad: {CURRENCY_LONG}/år # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Erstatt {STRING} - {STRING} @@ -3566,7 +3564,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} år ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. hastigheit: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maks fart: {LTBLUE}{VELOCITY} {BLACK}Rekkevidde: {LTBLUE}{COMMA} ruter STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks. hastigheit: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks. hastigheit: {LTBLUE}{VELOCITY} {BLACK}Maks. trekkraft: {LTBLUE}{FORCE} diff --git a/src/lang/polish.txt b/src/lang/polish.txt index b36b002d26..ece3e59515 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 27941 2017-12-11 19:50:30Z frosch $ +# $Id: polish.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1752,6 +1752,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Wyłączona STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Przewijanie lewym przyciskiem myszy: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Włącz przewijanie mapy przeciąganiem lewym przyciskiem myszki. Jest to przydatne podczas używania ekranu dotykowego do przewijania +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zamknij okno prawym przyciskiem: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zamyka okno poprzez kliknięcie prawym przyciskiem. Wyłącza pomoc kontekstową! STR_CONFIG_SETTING_AUTOSAVE :Autozapis: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Częstotliwość automatycznego zapisu stanu gry @@ -3069,7 +3071,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren w posiada STR_ABOUT_OPENTTD :{WHITE}OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prawa Autorskie {COPYRIGHT} 1995 Chris Sawyer, Wszelkie prawa zastrzeżone STR_ABOUT_VERSION :{BLACK}OpenTTD wersja {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 Zespół OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Zespół OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Zapisz grę @@ -3494,8 +3496,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Akceptuj STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Pokaż listę akceptowanych ładunków STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Akceptuje: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ta stacja posiada wyłączność na usługi transportowe w tym mieście. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Firma {YELLOW}{COMPANY}{BLACK} kupiła wyłączność na usługi transportowe w tym mieście. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ta stacja posiada wyłączność na usługi transportowe w tym mieście. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Firma {YELLOW}{COMPANY}{BLACK} kupiła wyłączność na usługi transportowe w tym mieście. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Oceny STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Pokaż ocenę stacji @@ -3674,11 +3676,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Wymaga: STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Wymaga: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Potrzebuje -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}oczekuje -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Potrzebuje: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} oczekuje{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING} @@ -3747,6 +3747,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Usuń wszystkie STR_GROUP_RENAME_CAPTION :{BLACK}Zmień nazwę grupy +STR_GROUP_PROFIT_THIS_YEAR :Zysk w tym roku: +STR_GROUP_PROFIT_LAST_YEAR :Zysk w zeszłym roku: +STR_GROUP_OCCUPANCY :Aktualne wykorzystanie: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nowe pociągi STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nowe elektryczne pojazdy szynowe @@ -3778,6 +3783,7 @@ STR_PURCHASE_INFO_ALL_TYPES :wszystkie typy STR_PURCHASE_INFO_ALL_BUT :wszystko oprócz {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. siła pociągowa: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Zasięg: {GOLD}{COMMA} pól +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Typ samolotu: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista wyboru pociągów - kliknij na pojeździe, aby uzyskać informacje. Ctrl+klik przełącza ukrywanie typu pojazdu STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista wyboru pojazdów drogowych - kliknij na pojeździe, aby uzyskać więcej informacji. Ctrl+klik przełącza ukrywanie typu pojazdu @@ -3917,10 +3923,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.b :lokomotywę Mag STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Koszt: {CURRENCY_LONG} Masa: {WEIGHT_SHORT}{}Prędkość: {VELOCITY} Moc: {POWER}{}Koszt utrzymania: {CURRENCY_LONG}/rok{}Ładowność: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Koszt: {CURRENCY_LONG} Masa: {WEIGHT_SHORT}{}Prędkość: {VELOCITY} Moc: {POWER} Maksymalna siła pociągowa: {6:FORCE}{}Koszt utrzymania: {4:CURRENCY_LONG}/rok{}Ładowność: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY}{}Ładowność: {CARGO_LONG}, {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY}{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY} Zasięg: {COMMA} pól{}Ładowność: {CARGO_LONG}, {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY} Zasięg: {COMMA} pól{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY}{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Max. prędkość: {VELOCITY}{}Typ samolotu: {STRING}{}Ładowność: {CARGO_LONG}, {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Max. prędkość: {VELOCITY}{}Typ samolotu: {STRING}{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Max. prędkość: {VELOCITY}{}Typ samolotu: {STRING} Zasięg: {COMMA}{}Ładowność: {CARGO_LONG}, {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Max. prędkość: {VELOCITY}{}Typ samolotu: {STRING} Zasięg: {COMMA}{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Zastąp {STRING} - {STRING} @@ -4043,7 +4050,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} {P rok STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P rok lata lat} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Prędkość maksymalna: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Prędkość maksymalna: {LTBLUE}{VELOCITY} {BLACK}Zasięg: {LTBLUE}{COMMA} pól +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. prędkość: {LTBLUE}{VELOCITY} {BLACK}Typ samolotu: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. prędkość: {LTBLUE}{VELOCITY} {BLACK}Typ samolotu: {LTBLUE}{STRING} {BLACK}Zasięg: {LTBLUE}{COMMA} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Masa: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moc: {LTBLUE}{POWER}{BLACK} Prędkość maksymalna: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Masa: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moc: {LTBLUE}{POWER}{BLACK} Prędkość maksymalna: {LTBLUE}{VELOCITY} {BLACK}Maksymalna siła pociągowa: {LTBLUE}{FORCE} diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index c56816b0ae..97790e8462 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -11,7 +11,7 @@ ##gender n m f mp fp -# $Id: portuguese.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: portuguese.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1199,9 +1199,9 @@ STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altura máxima STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Tamanho máximo de túneis: {STRING} STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Tamanho máximo para construção de túneis STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método de financiamento de indústrias primárias: {STRING} -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Método de financiar uma indústria pirmária. 'nenhum' significa que não é possível financiar nenhuma, 'prospecção' significa que é possível financiar, mas a construção é feita num local arbitrário no mapa e até pode falhar, 'como outras indústrias' significa que as indústrias de matérias primas podem ser construídas por companhias como indústrias de processamento em qualquer sítio que elas escolham +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Método de financiar uma indústria primária. 'nenhum' significa que não é possível financiar nenhuma, 'prospecção' significa que é possível financiar, mas a construção é feita num local arbitrário no mapa e até pode falhar, 'como as outras' significa que as indústrias de matérias primas podem ser construídas em qualquer sítio pelas empresas, como se fossem indústrias de processamento STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Nenhum -STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Mesmo método +STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Como as outras STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospecção STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Área plana à volta das industrias: {STRING} STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Quantidade de terreno plano á volta de uma industria. Isto garante que terreno vazio esteja disponível para construir linhas, etc @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desligado STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Deslocar com botão esquerdo: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activar deslocamento do mapa através de arrastamento com o botão esquerdo do rato. Esta opção é particularmente útil quando é usado um ecran de toque para deslocamento +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fechar janelas ao fazer clique direito: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fecha uma janela ao fazer clique direito dentro dela. Desactiva os textos de ajuda ao fazer clique direito! STR_CONFIG_SETTING_AUTOSAVE :Guardar automaticamente: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Seleccione o intervalo entre gravações automáticas @@ -1402,7 +1404,7 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostrar horári STR_CONFIG_SETTING_QUICKGOTO :Criação rápida de ordens de veículos: {STRING} STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Pré-seleccionar o 'cursor Ir Para' ao abrir a janela de ordens STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipo padrão de ferrovia (ao criar ou abrir jogo): {STRING} -STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de carrir seleccionado após o início ou carregamento de um jogo. 'primeiro disponível' selecciona o tipo mais antigo de carril, 'último disponível' selecciona o tipo mais recente de carril e 'mais utilizado' selecciona o tipo mais utilizado actualmente +STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de carril seleccionado após o início ou carregamento de um jogo. 'primeiro disponível' selecciona o tipo mais antigo de carril, 'último disponível' selecciona o tipo mais recente de carril e 'mais utilizado' selecciona o tipo mais utilizado actualmente STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Primeiro disponível STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Último disponível STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mais utilizado @@ -2591,6 +2593,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nome do STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceite: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) +STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tipo de carril: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limite de velocidade da linha: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Limite de velocidade da estrada: {LTBLUE}{VELOCITY} @@ -2603,29 +2606,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Campos STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Neve STR_LAI_CLEAR_DESCRIPTION_DESERT :Deserto -STR_LAI_RAIL_DESCRIPTION_TRACK :Caminhos-de-ferro linha -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Caminhos-de-ferro linha com sinais de bloqueio -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Caminhos-de-ferro linha com pre-sinais -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Caminhos-de-ferro linha com sinais de saída -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Caminhos-de-ferro linha com sinais combinados -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Caminhos-de-ferro linha com sinais de caminho -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Caminhos-de-ferro linha com sinais de sentido único -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Caminhos-de-ferro linha com bloqueio e pré-sinais -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Caminhos-de-ferro linha com bloqueio e sinais de saida -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Caminhos-de-ferro linha com bloqueio e sinais combinados -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Caminhos-de-ferro linha com bloqueio e sinais de rota -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Caminhos-de-ferro linha com bloqueio e sinais de sentido único -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Caminhos-de-ferro linha com pré-sinais e sinais de saida -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Caminhos-de-ferro linha com pré-sinais e sinais combinados -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Caminhos-de-ferro linha com pré-sinais e sinais de rota -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Caminhos-de-ferro linha com pré-sinais e sinais de sentido único -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Caminhos-de-ferro linha com sinais de saida e sinais combinados -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Caminhos-de-ferro linha com sinais de saida e sinais de rota -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Caminhos-de-ferro linha com sinais de saida e de sentido único -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Caminhos-de-ferro linha com sinais combinados e sinais de rota -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Caminhos-de-ferro linha com sinais combinados e sentido unico -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Caminhos-de-ferro linha com sinais de rota e de sentido unico -STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Caminhos-de-ferro depósito de comboios +STR_LAI_RAIL_DESCRIPTION_TRACK :Linha de caminhos-de-ferro +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Linha de caminhos-de-ferro com pre-sinais +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Linha de caminhos-de-ferro com sinais de saída +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Linha de caminhos-de-ferro com sinais combinados +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Linha de caminhos-de-ferro com sinais de rota +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais de sentido único +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e pré-sinais +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e de saida +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e combinados +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e de rota +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais de bloqueio e de sentido único +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Linha de caminhos-de-ferro com pré-sinais e sinais de saida +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Linha de caminhos-de-ferro com pré-sinais e sinais combinados +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Linha de caminhos-de-ferro com pré-sinais e sinais de rota +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Linha de caminhos-de-ferro com pré-sinais e sinais de sentido único +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Linha de caminhos-de-ferro com sinais de saida e combinados +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Linha de caminhos-de-ferro com sinais de saida e de rota +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais de saida e de sentido único +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Linha de caminhos-de-ferro com sinais combinados e de rota +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais combinados e de sentido único +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Linha de caminhos-de-ferro com sinais de rota e de sentido único +STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depósito de comboios de caminhos-de-ferro STR_LAI_ROAD_DESCRIPTION_ROAD :Estrada STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Estrada com iluminação @@ -2689,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno proprie STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD... STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Direitos de autor originais {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 A equipa do OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 A equipa do OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Jogo @@ -3114,8 +3117,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aceita STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar lista de carga aceite STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aceita: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estação tem direitos de transporte exclusivos nesta cidade. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} comprou direitos exclusivos de transporte nesta cidade. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estação tem direitos de transporte exclusivos nesta cidade. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} comprou direitos exclusivos de transporte nesta cidade. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Avaliações STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Mostrar avaliações da estação @@ -3294,8 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necessá STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Necessário: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}a aguardar +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requer: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} a aguardar{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING} @@ -3364,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos o STR_GROUP_RENAME_CAPTION :{BLACK}Renomear um grupo +STR_GROUP_PROFIT_THIS_YEAR :Lucro deste ano: +STR_GROUP_PROFIT_LAST_YEAR :Lucro no último ano: +STR_GROUP_OCCUPANCY :Utilização actual: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novos Veículos Ferroviários STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Novos comboios para carris electrificados @@ -3395,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Todos os tipos STR_PURCHASE_INFO_ALL_BUT :Todas menos {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Máx. Força de Tracção: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} quadrados +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de veículos ferroviários - clique num veículo para informações STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de veículos rodoviários - clique num veículo para informações @@ -3526,12 +3536,13 @@ STR_ENGINE_PREVIEW_SHIP :barco STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :locomotiva monocarril STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotiva maglev -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potência: {POWER}{}Custo de circulação: {CURRENCY_LONG}/ano{}Capacidade: {CARGO_LONG} -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade: {VELOCITY} Potência: {POWER} Máx. F.T.: {6:FORCE}{}Custo de circulação: {4:CURRENCY_LONG}/ano{}Capacidade: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Máx. Velocidade: {VELOCITY}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de circulação: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Máx. Velocidade: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo de circulação: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Preço: {CURRENCY_LONG} Velocidade max.: {VELOCITY} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de manutenção: {CURRENCY_LONG}/ano -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Preço: {CURRENCY_LONG} Velocidade max.: {VELOCITY} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}{}Custo de manutenção: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade Máx.: {VELOCITY} Potência: {POWER}{}Custo de Circulação: {CURRENCY_LONG}/ano{}Capacidade: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Custo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidade Máx.: {VELOCITY} Potência: {POWER} F.T. Máx.: {6:FORCE}{}Custo de Circulação: {4:CURRENCY_LONG}/ano{}Capacidade: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Capacidade: {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Tipo de Aeronave: {STRING}{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Tipo de Aeronave: {STRING}{}Capacidade: {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Tipo de Aeronave: {STRING} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}, {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Custo: {CURRENCY_LONG} Velocidade Máx.: {VELOCITY}{}Tipo de Aeronave: {STRING} Alcance: {COMMA} quadrados{}Capacidade: {CARGO_LONG}{}Custo de Circulação: {CURRENCY_LONG}/ano # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituir {STRING} - {STRING} @@ -3561,6 +3572,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pression STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Alternar entre a janela de substituição de locomotivas e a janela de substituição de vagões STR_REPLACE_ENGINES :Locomotivas STR_REPLACE_WAGONS :Vagões +STR_REPLACE_ALL_RAILTYPE :Todos os veículos ferroviários STR_REPLACE_HELP_RAILTYPE :{BLACK}Seleccione o tipo de carril para o qual deseja efectuar a substituição dos motores STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Exibe o tipo de motor que substituirá o que está seleccionado à esquerda, se algum @@ -3653,7 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} ano{P " STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ano{P "" s} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Máx. velocidade: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Velocidade max.: {LTBLUE}{VELOCITY} {BLACK}Alcance: {LTBLUE}{COMMA} quadrados +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Vel. máxima: {LTBLUE}{VELOCITY} {BLACK}Tipo de Aeronave: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de Aeronave: {LTBLUE}{STRING} {BLACK}Alcance: {LTBLUE}{COMMA} quadrados STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Max. velocidade: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Máx. velocidade: {LTBLUE}{VELOCITY} {BLACK}Máx. E.T.: {LTBLUE}{FORCE} @@ -4024,7 +4037,7 @@ STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Script de Jogo STR_AI_SETTINGS_CLOSE :{BLACK}Fechar STR_AI_SETTINGS_RESET :{BLACK}Repor STR_AI_SETTINGS_SETTING :{STRING}: {ORANGE}{STRING} -STR_AI_SETTINGS_START_DELAY :Número de dias para iniciar esta IA depois da anterior (tomar ou lorgar): {ORANGE}{STRING} +STR_AI_SETTINGS_START_DELAY :Número de dias para iniciar esta IA depois da anterior (aproximadamente): {ORANGE}{STRING} # Textfile window diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 7d12a26e98..43958ee5e5 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -10,7 +10,7 @@ ##grflangid 0x28 -# $Id: romanian.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: romanian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2652,7 +2652,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren în propr STR_ABOUT_OPENTTD :{WHITE}Despre OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Toate drepturile rezervate STR_ABOUT_VERSION :{BLACK}OpenTTD versiunea {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Echipa OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Echipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvează joc @@ -3071,8 +3071,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acceptă STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Afişează lista de încărcături acceptate STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Acceptă: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Această staţie are drepturi exclusive de transport în acest oraş. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} a cumpărat drepturi exclusive de transport în acest oraş. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Această staţie are drepturi exclusive de transport în acest oraş. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} a cumpărat drepturi exclusive de transport în acest oraş. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Evaluări STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Afişează evaluările staţiei @@ -3317,6 +3317,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Elimină toate STR_GROUP_RENAME_CAPTION :{BLACK}Redenumeşte un grup + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Noi vehicule feroviare STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Noi Vehicule Electrice pe Sine @@ -3481,10 +3482,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotivă per STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost: {CURRENCY_LONG} Greutate: {WEIGHT_SHORT}{}Vitezã: {VELOCITY} Putere: {POWER}{}Cost de rulare: {CURRENCY_LONG}/an{}Capacitate: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cost: {CURRENCY_LONG} Greutate: {WEIGHT_SHORT}{}Viteză: {VELOCITY} Putere: {POWER} Ef. T. Max.: {6:FORCE}{}Cost rulaj: {4:CURRENCY_LONG}/an{}Capacitate: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Viteză max.: {VELOCITY}{}Capacitate: {CARGO_LONG}, {CARGO_LONG}{}Mentenanţă: {CURRENCY_LONG}/an -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Viteză max.: {VELOCITY}{}Capacitate: {CARGO_LONG}{}Mentenanţă: {CURRENCY_LONG}/an -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cost: {CURRENCY_LONG} Viteză maximă: {VELOCITY} Rază de acțiune: {COMMA} tiles{}Capacitate: {CARGO_LONG}, {CARGO_LONG}{}Cost rulare: {CURRENCY_LONG}/an -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Viteză maximă: {VELOCITY} Rază de acțiune: {COMMA} pătrățele{}Capacitate: {CARGO_LONG}{}Cost de rulare: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Viteză max.: {VELOCITY}{}Capacitate: {CARGO_LONG}{}Mentenanţă: {CURRENCY_LONG}/an # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Înlocuieşte {STRING} - {STRING} @@ -3606,7 +3604,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} an{P "" STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} an{P "" i} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Viteză max.: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Viteză maximă: {LTBLUE}{VELOCITY} {BLACK}Rază de acțiune: {LTBLUE}{COMMA} pătrățele STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Greutate: {LTBLUE}{WEIGHT_SHORT} {BLACK}Putere: {LTBLUE}{POWER}{BLACK} Viteză max.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Greutate: {LTBLUE}{WEIGHT_SHORT} {BLACK}Putere: {LTBLUE}{POWER}{BLACK} Viteză max.: {LTBLUE}{VELOCITY} {BLACK}Efort tractiv: {LTBLUE}{FORCE} diff --git a/src/lang/russian.txt b/src/lang/russian.txt index d9f4a843a6..e00a6c22f4 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 27777 2017-03-11 16:49:51Z frosch $ +# $Id: russian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1524,6 +1524,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Выкл. STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Смещение обзора по нажатию левой кнопки мыши: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Смещение обзора левой кнопкой мыши. Это удобно при использовании сенсорного экрана. +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Закрывать окна щелчком ПКМ: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Закрывать окно щелчком правой кнопкой мыши в его пределах. При этом отключается появление подсказок по правой кнопке. STR_CONFIG_SETTING_AUTOSAVE :Автосохранения: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Укажите интервал между автоматическими сохранениями @@ -2869,7 +2871,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земля в STR_ABOUT_OPENTTD :{WHITE}Об OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинальные авторские права {COPYRIGHT} 1995 Chris Sawyer. Все права защищены. STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Команда разработчиков OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Команда разработчиков OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Сохранить игру @@ -3294,8 +3296,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Прин STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Показать список принимаемых грузов STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Принимается: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Компания-владелец этой станции обладает эксклюзивными правами перевозки пассажиров и грузов в этом городе. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} приобрела эксклюзивные права на перевозку пассажиров и грузов в этом городе. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Компания-владелец этой станции обладает эксклюзивными правами перевозки пассажиров и грузов в этом городе. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} приобрела эксклюзивные права на перевозку пассажиров и грузов в этом городе. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинг STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Показать рейтинг станции @@ -3475,10 +3477,8 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Треб ############ range for requires ends STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Требуется: -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}ожидает -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} ожидает{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Производит: {YELLOW}{STRING}{STRING} @@ -3547,6 +3547,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Удалить STR_GROUP_RENAME_CAPTION :{BLACK}Название группы +STR_GROUP_PROFIT_THIS_YEAR :Прибыль в текущем году: +STR_GROUP_PROFIT_LAST_YEAR :Прибыль в прошлом году: +STR_GROUP_OCCUPANCY :Средняя загрузка ТС: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Новый поезд STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Новый электропоезд @@ -3578,6 +3583,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Все типы STR_PURCHASE_INFO_ALL_BUT :Всё, кроме {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Макс. тяговое усилие: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Дальность: {GOLD}{COMMA} клет{P ка ки ок} +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Тип возд. судна: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список локомотивов и вагонов - щёлкните для получения информации. Ctrl+щелчок скроет/покажет ТС. STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список автотранспорта - щёлкните для получения информации. Ctrl+щелчок скроет/покажет выбранный автомобиль. @@ -3717,10 +3723,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.gen :магнито STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Цена: {CURRENCY_LONG} Вес: {WEIGHT_SHORT}{}Скорость: {VELOCITY} Мощность: {POWER}{}Стоимость обслуж.: {CURRENCY_LONG}/год{}Ёмкость: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Цена: {CURRENCY_LONG} Вес: {WEIGHT_SHORT}{}Скорость: {VELOCITY} Мощность: {POWER} Макс. ТУ: {6:FORCE}{}Стоимость обслуж.: {4:CURRENCY_LONG}/год{}Ёмкость: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY}{}Ёмкость: {CARGO_LONG}, {CARGO_LONG}{}Стоимость обслуживания: {CURRENCY_LONG}/год -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY}{}Ёмкость: {CARGO_LONG}{}Стоимость обслуж.: {CURRENCY_LONG}/год -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY} Дальность: {COMMA} клет{P 3 ка ки ок}{}Ёмкость: {CARGO_LONG}, {CARGO_LONG}{}Стоимость обслуживания: {CURRENCY_LONG}/год -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY} Дальность: {COMMA} клет{P 3 ка ки ок}{}Ёмкость: {CARGO_LONG}{}Стоимость обслуживания: {CURRENCY_LONG}/год +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY}{}Ёмкость: {CARGO_LONG}{}Стоимость обслуж.: {CURRENCY_LONG}/год +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY}{}Тип: {STRING}{}Ёмкость: {CARGO_LONG}, {CARGO_LONG}{}Стоимость обслуж.: {CURRENCY_LONG}/год +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY}{}Тип: {STRING}{}Ёмкость: {CARGO_LONG}{}Стоимость обслуж.: {CURRENCY_LONG}/год +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY}{}Тип: {STRING} Дальность: {COMMA} клеток{}Ёмкость: {CARGO_LONG}, {CARGO_LONG}{}Стоимость обслуж.: {CURRENCY_LONG}/год +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. скорость: {VELOCITY}{}Тип: {STRING} Дальность: {COMMA} клеток{}Ёмкость: {CARGO_LONG}{}Стоимость обслуж.: {CURRENCY_LONG}/год # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Замена {STRING.gen} - {STRING} @@ -3847,7 +3854,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} {P го STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P год года лет} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. скорость: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс. скорость: {LTBLUE}{VELOCITY} {BLACK}Дальность: {LTBLUE}{COMMA} клет{P ка ки ок} +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Макс. скорость: {LTBLUE}{VELOCITY} {BLACK}Тип возд. судна: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Макс. скорость: {LTBLUE}{VELOCITY} {BLACK}Тип: {LTBLUE}{STRING} {BLACK}Дальность: {LTBLUE}{COMMA} клеток STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Вес: {LTBLUE}{WEIGHT_SHORT} {BLACK}Мощность: {LTBLUE}{POWER}{BLACK} Макс. скорость: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вес: {LTBLUE}{WEIGHT_SHORT} {BLACK}Мощность: {LTBLUE}{POWER}{BLACK} Макс. скорость: {LTBLUE}{VELOCITY} {BLACK}Макс. ТУ: {LTBLUE}{FORCE} diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index a1dd917ae2..9805a1b2b5 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 27865 2017-05-03 20:43:22Z frosch $ +# $Id: serbian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2882,7 +2882,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemljište u po STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originalni kopirajt {COPYRIGHT} 1995 Chris Sawyer, Sva prava zadržana STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD tim +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD tim # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sačuvaj poziciju @@ -3307,8 +3307,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Prihvata STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Prikaži spisak tovara koje stanica prihvata STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Prihvata: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ova stanica ima ekskluzivna transportna prava u ovom gradu. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} je kupio ekskluzivna prava prevoza u ovom gradu. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ova stanica ima ekskluzivna transportna prava u ovom gradu. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} je kupio ekskluzivna prava prevoza u ovom gradu. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ocene STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Prikaži ocene stanice @@ -3555,6 +3555,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Ukloni sva vozi STR_GROUP_RENAME_CAPTION :{BLACK}Preimenuj grupu + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nova Železnička Vozila STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nova Železnička Električna Vozila @@ -3725,10 +3726,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.aku :magnetnog žel. STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Težina: {WEIGHT_SHORT}{}Brzina: {VELOCITY} Snaga: {POWER}{}Cena Održavanja: {CURRENCY_LONG}/god.{}Nosivost: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Težina: {WEIGHT_SHORT}{}Brzina: {VELOCITY} Snaga: {POWER} Najveća vučna snaga: {6:FORCE}{}Cena Održavanja: {4:CURRENCY_LONG}/god{}Nosivost: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Najveća Brzina: {VELOCITY}{}Nosivost: {CARGO_LONG}, {CARGO_LONG}{}Cena Održavanja: {CURRENCY_LONG}/god. -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Najveća Brzina: {VELOCITY}{}Nosivost: {CARGO_LONG}{}Cena Održavanja: {CURRENCY_LONG}/god. -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cena: {CURRENCY_LONG} Najveća Brzina: {VELOCITY} Domet: {COMMA} pločica{}Nosivost: {CARGO_LONG}, {CARGO_LONG}{}Cena Održavanja: {CURRENCY_LONG}/god. -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Najveća Brzina: {VELOCITY} Domet: {COMMA} pločica{}Nosivost: {CARGO_LONG}{}Cena Održavanja: {CURRENCY_LONG}/god. +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Najveća Brzina: {VELOCITY}{}Nosivost: {CARGO_LONG}{}Cena Održavanja: {CURRENCY_LONG}/god. # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Zameni {STRING} - {STRING} @@ -3860,7 +3858,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} godin{P STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} godin{P a e a} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Najveća brzina: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Najveća brzina: {LTBLUE}{VELOCITY} {BLACK}Domet: {LTBLUE}{COMMA} pločica STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Najveća brzina: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Najveća brzina: {LTBLUE}{VELOCITY} {BLACK} Najveća vučna snaga: {LTBLUE}{FORCE} diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index e80d30b73f..0704c8ee1a 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -10,7 +10,7 @@ ##grflangid 0x56 -# $Id: simplified_chinese.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: simplified_chinese.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司属地 STR_ABOUT_OPENTTD :{WHITE}关于 OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原始版权由 {COPYRIGHT} 1995 Chris Sawyer 所有,保留一切权力。 STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD 团队 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 团队 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}保存游戏 @@ -3113,8 +3113,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}接受 STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}显示接受的货物列表 STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}接受:{WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}这个车站在这个镇里享有独家经营权 -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} 购买了本城镇专属经营权 +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}这个车站在这个镇里享有独家经营权 +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} 购买了本城镇专属经营权 STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}评价 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}显示车站评价 @@ -3293,8 +3293,8 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}需要 STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}需要:{YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}等待中 +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} 等待中{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}产出: {YELLOW}{STRING}{STRING} @@ -3363,6 +3363,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :移除所有车 STR_GROUP_RENAME_CAPTION :{BLACK}重命名分组 +STR_GROUP_PROFIT_THIS_YEAR :今年利润: +STR_GROUP_PROFIT_LAST_YEAR :去年利润 +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :购买普通列车 STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :购买电气化列车 @@ -3394,6 +3398,7 @@ STR_PURCHASE_INFO_ALL_TYPES :所有类型 STR_PURCHASE_INFO_ALL_BUT :除了 {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}最大牵引力:{GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}航行距离: {GOLD}{COMMA} 格 +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}飞机类型: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}列车车辆选择列表。点击车辆查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏车辆的种类 STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}路面车辆选择列表。点击车辆查看详细信息,或者按住 Ctrl 键再点击以切换是否隐藏车辆的种类 @@ -3527,10 +3532,8 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :磁悬浮机车 STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}售价:{CURRENCY_LONG} 重量:{WEIGHT_SHORT}{}速度:{VELOCITY} 功率:{POWER}{}运行费用:{CURRENCY_LONG}/年{}运载能力: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}售价:{CURRENCY_LONG} 重量:{WEIGHT_SHORT}{}速度:{VELOCITY} 功率:{POWER} 最大牵引力:{6:FORCE}{}运行费用{4:CURRENCY_LONG}/年{}运载能力:{5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}售价:{CURRENCY_LONG} 最大速度:{VELOCITY}{}运载能力:{CARGO_LONG}, {CARGO_LONG}{}运行成本:{CURRENCY_LONG} /年 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}售价:{CURRENCY_LONG} 最大速度:{VELOCITY}{}运载能力:{CARGO_LONG}{}运行成本:{CURRENCY_LONG} /年 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}费用: {CURRENCY_LONG} 最大速度: {VELOCITY} 航行距离: {COMMA} 格{}运载量: {CARGO_LONG}, {CARGO_LONG}{}运营成本: {CURRENCY_LONG}/年 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}购买费用: {CURRENCY_LONG} 最大速度: {VELOCITY} 航行距离: {COMMA} 格{}运载量: {CARGO_LONG}{}运营成本: {CURRENCY_LONG}/年 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}售价:{CURRENCY_LONG} 最大速度:{VELOCITY}{}运载能力:{CARGO_LONG}{}运行成本:{CURRENCY_LONG} /年 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}购买费用: {CURRENCY_LONG} 最大速度: {VELOCITY}{}飞机种类: {STRING} 最大航程: {COMMA} 格{}装载量: {CARGO_LONG}, {CARGO_LONG}{}运行费用: {CURRENCY_LONG}/年 # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}更新 {STRING} - {STRING} @@ -3653,7 +3656,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} 年 ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} 年 ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最大速度:{LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}最大速度: {LTBLUE}{VELOCITY} {BLACK}航行距离: {LTBLUE}{COMMA} 格 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}重量:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最大速度:{LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}重量:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最大速度:{LTBLUE}{VELOCITY} {BLACK}最大牵引力:{LTBLUE}{FORCE} diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index e94c26d2af..65863261ca 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -12,7 +12,7 @@ ##case g -# $Id: slovak.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: slovak.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2755,7 +2755,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Spoločnosťou STR_ABOUT_OPENTTD :{WHITE}OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pôvodný copyright: {COPYRIGHT} 1995 Chris Sawyer, všetky práva vyhradené STR_ABOUT_VERSION :{BLACK}OpenTTD verzia {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 team OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 team OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložiť hru @@ -3180,8 +3180,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Prijíma STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Zobraziť zoznam prijímaného nákladu STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Prijíma: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Táto stanica má exkluzívne prepravné práva v tomto meste. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Spoločnosť {YELLOW}{COMPANY}{BLACK} si kúpila exkluzívne prepravné práva v tomto meste +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Táto stanica má exkluzívne prepravné práva v tomto meste. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Spoločnosť {YELLOW}{COMPANY}{BLACK} si kúpila exkluzívne prepravné práva v tomto meste STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Hodnotenie STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Zobraziť hodnotenia stanice @@ -3428,6 +3428,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Odstrániť vš STR_GROUP_RENAME_CAPTION :{BLACK}Premenovať skupinu + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nove vlaky STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nové elektrické lokomotívy a vagóny @@ -3592,10 +3593,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=z}magnetick STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Hmotnosť: {WEIGHT_SHORT}{}Rýchlosť: {VELOCITY} Výkon: {POWER}{}Prevádzkové náklady: {CURRENCY_LONG}/rok{}Kapacita: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Hmotnosť: {WEIGHT_SHORT}{}Rýchlosť: {VELOCITY} Sila: {POWER} Max. T.E.: {6:FORCE}{}Prevádzkové náklady: {4:CURRENCY_LONG}/yr{}Kapacita: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. Rýchlosť: {VELOCITY}{}Kapacita: {CARGO_LONG}, {CARGO_LONG}{}Prevádzkové náklady: {CURRENCY_LONG}/rok -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. Rýchlosť: {VELOCITY}{}Kapacita: {CARGO_LONG}{}Prevádzkové náklady: {CURRENCY_LONG}/rok -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cena: {CURRENCY_LONG} Max. rýchlosť: {VELOCITY} Dosah: {COMMA} políčok{}Kapacita: {CARGO_LONG}, {CARGO_LONG}{}Prevádzkové náklady: {CURRENCY_LONG}/rok -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. rýchlosť: {VELOCITY} Dosah: {COMMA} políčok{}Kapacita: {CARGO_LONG}{}Prevádzkové náklady: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. Rýchlosť: {VELOCITY}{}Kapacita: {CARGO_LONG}{}Prevádzkové náklady: {CURRENCY_LONG}/rok # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Výmena {STRING} - {STRING} @@ -3717,7 +3715,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} rok{P " STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} rok{P "" y ov} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. rýchlosť: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. rýchlosť: {LTBLUE}{VELOCITY} {BLACK}Dosah: {LTBLUE}{COMMA} políčok STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Hmotnosť: {LTBLUE}{WEIGHT_SHORT} {BLACK}Sila: {LTBLUE}{POWER}{BLACK} Max. rýchlosť: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Hmotnosť: {LTBLUE}{WEIGHT_SHORT} {BLACK}Sila: {LTBLUE}{POWER}{BLACK} Max. rýchlosť: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index e4177849ce..3f85ef3418 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -11,7 +11,7 @@ ##case r d t -# $Id: slovenian.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: slovenian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1525,6 +1525,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Izklop STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Premik slike z levim klikom: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Omogoči pomik pogleda z levim klikom miške in vlečenjem. Primerno za dotične zaslone. +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zapri okno z desnim klikom: {STRING} STR_CONFIG_SETTING_AUTOSAVE :Samodejno shrani: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Izberi časovni interval samodejnega shranjevanja igre @@ -2840,7 +2841,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ozemlje v lasti STR_ABOUT_OPENTTD :{WHITE}O OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prvotne avtorske pravice {COPYRIGHT} 1995 Chris Sawyer, vse pravice pridržane STR_ABOUT_VERSION :{BLACK}OpenTTD različica {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 ekipa OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 ekipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Shrani igro @@ -3265,8 +3266,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Sprejema STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Prikaži seznam sprejetega tovora STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Sprejema: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ta postaja ima ekskluzivne pravice v tem mestu. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} je odkupilo ekskluzivne prevozne pravice v tem mestu. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ta postaja ima ekskluzivne pravice v tem mestu. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} je odkupilo ekskluzivne prevozne pravice v tem mestu. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Ocene STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Prikaz ocen postaje @@ -3513,6 +3514,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Odstrani vsa vo STR_GROUP_RENAME_CAPTION :{BLACK}Preimenuj eno skupino + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nova železniška vozila STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nova električna tirna vozila @@ -3677,10 +3679,8 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnetna lokomo STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Teža: {WEIGHT_SHORT}{}Hitrost: {VELOCITY} Moč: {POWER}{}Cena delovanja: {CURRENCY_LONG}/leto{}Zmogljivost: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Teža: {WEIGHT_SHORT}{}Hitrost: {VELOCITY} Moč: {POWER} Max. T.E.: {6:FORCE}{}Stroški: {4:CURRENCY_LONG}/yr{}Zmogljivost: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. hitrost: {VELOCITY}{}Zmogljivost: {CARGO_LONG}, {CARGO_LONG}{}Cena delovanja: {CURRENCY_LONG}/leto -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. hitrost: {VELOCITY}{}Zmogljivost: {CARGO_LONG}{}Cena delovanja: {CURRENCY_LONG}/leto -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cena: {CURRENCY_LONG} Max. Hitrost: {VELOCITY} Domet: {COMMA} polj{}Zmogljivost: {CARGO_LONG}, {CARGO_LONG}{}Stroški delovanja: {CURRENCY_LONG}/leto -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. Hitrost: {VELOCITY} Domet: {COMMA} polj{}Zmogljivost: {CARGO_LONG}{}Stroški delovanja: {CURRENCY_LONG}/leto +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. hitrost: {VELOCITY}{}Zmogljivost: {CARGO_LONG}{}Cena delovanja: {CURRENCY_LONG}/leto +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Max. hitrost: {VELOCITY}{}Vrsta letala: {STRING}{}Zmogljivost: {CARGO_LONG}{}Stroški obratovanja: {CURRENCY_LONG}/leto # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Zamenjaj {STRING} - {STRING} @@ -3802,7 +3802,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} let{P o STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} let{P o i a ""} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Max. hitrost: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Max. hitrost: {LTBLUE}{VELOCITY} {BLACK}Domet: {LTBLUE}{COMMA} polj STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Teža: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moč: {LTBLUE}{POWER}{BLACK} Max. hitrost: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Teža: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moč: {LTBLUE}{POWER}{BLACK} Max. hitrost: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 22182fb61b..c3f6dfa899 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -11,7 +11,7 @@ ##gender m f -# $Id: spanish.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: spanish.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desactivado STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Desplazamiento con botón izquierdo: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activa el deslizamiento del mapa al arrastrarlo con el botón izquierdo. Esto es especialmente útil al usar pantallas táctiles +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Cerrar ventana con click derecho: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Cierra una ventana al hacer click derecho dentro. ¡Quita la información al hacer click derecho! STR_CONFIG_SETTING_AUTOSAVE :Autoguardado: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecciona el intervalo entre guardados automáticos del juego @@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno propied STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright Original {COPYRIGHT} 1995 Chris Sawyer, Todos los derechos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 El equipo OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 El equipo OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Juego @@ -3115,8 +3117,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acepta STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar lista de carga aceptada STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Acepta: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estación tiene derechos de transporte exclusivos en este municipio. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} compró derechos de transporte exclusivo en este municipio. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estación tiene derechos de transporte exclusivos en este municipio. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} compró derechos de transporte exclusivo en este municipio. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Calificación STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Ver calificación de la estación @@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necesita STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necesita -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}esperando -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necesita: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperando{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING} @@ -3368,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Quitar todos lo STR_GROUP_RENAME_CAPTION :{BLACK}Renombrar un grupo +STR_GROUP_PROFIT_THIS_YEAR :Beneficio este año: +STR_GROUP_PROFIT_LAST_YEAR :Beneficio del último año: +STR_GROUP_OCCUPANCY :Uso actual: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nuevos Vehículos de Ferrocarril STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nuevos Vehículos de Ferrocarril Eléctrico @@ -3399,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Todos los tipos STR_PURCHASE_INFO_ALL_BUT :Todo excepto {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}F.T máxima: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} casillas +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de selección de los vehículos de ferrocarril. Click en el vehículo para más información. Ctrl+Click para mostrar/ocultar el tipo del vehículo STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos de carretera. Click en el vehículo para más información. Ctrl+Click para mostrar/ocultar el tipo del vehículo @@ -3532,10 +3538,11 @@ 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 Mantenimiento: {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 Mantenimiento: {4:CURRENCY_LONG}/año{}Capacidad: {5:CARGO_LONG} -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 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY}{}Capacidad: {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY}{}Tipo de aeronave: {STRING}{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY}{}Tipo de aeronave: {STRING}{}Capacidad: {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY}{}Tipo de aeronave: {STRING} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Coste: {CURRENCY_LONG} Velocidad Máx.: {VELOCITY}{}Tipo de aeronave: {STRING} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}{}Coste Mantenimiento: {CURRENCY_LONG}/año # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplazar {STRING} - {STRING} @@ -3658,7 +3665,8 @@ 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 Máx.: {LTBLUE}{VELOCITY} {BLACK}Alcance: {LTBLUE}{COMMA} casillas +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Velocidad Máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Velocidad Máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} {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} diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index f33095424d..8eaf61b27b 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -11,7 +11,7 @@ ##gender m f -# $Id: spanish_MX.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: spanish_MX.txt 27991 2018-03-14 18:45: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. @@ -55,7 +55,7 @@ STR_CARGO_PLURAL_CANDY :{G=m}Dulces STR_CARGO_PLURAL_COLA :{G=f}Bebida de cola STR_CARGO_PLURAL_COTTON_CANDY :{G=m}Algodón de azúcar STR_CARGO_PLURAL_BUBBLES :{G=f}Burbujas -STR_CARGO_PLURAL_TOFFEE :{G=m}Jamoncillos +STR_CARGO_PLURAL_TOFFEE :{G=m}Caramelos suaves STR_CARGO_PLURAL_BATTERIES :{G=f}Pilas STR_CARGO_PLURAL_PLASTIC :{G=m}Plástico STR_CARGO_PLURAL_FIZZY_DRINKS :{G=m}Refrescos @@ -89,7 +89,7 @@ STR_CARGO_SINGULAR_CANDY :{G=m}Dulce STR_CARGO_SINGULAR_COLA :{G=f}Bebida de cola STR_CARGO_SINGULAR_COTTON_CANDY :{G=m}Algodón de azúcar STR_CARGO_SINGULAR_BUBBLE :{G=f}Burbuja -STR_CARGO_SINGULAR_TOFFEE :{G=m}Jamoncillo +STR_CARGO_SINGULAR_TOFFEE :{G=m}Caramelo suave STR_CARGO_SINGULAR_BATTERY :{G=f}Pila STR_CARGO_SINGULAR_PLASTIC :{G=m}Plástico STR_CARGO_SINGULAR_FIZZY_DRINK :{G=m}Refresco @@ -123,7 +123,7 @@ STR_QUANTITY_SWEETS :{COMMA}{NBSP}bo STR_QUANTITY_COLA :{VOLUME_LONG} de cola STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de algo{P dón dones} de azúcar STR_QUANTITY_BUBBLES :{COMMA} burbuja{P "" s} -STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de jamoncillo{P "" s} +STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de caramelo suave STR_QUANTITY_BATTERIES :{COMMA} pila{P "" s} STR_QUANTITY_PLASTIC :{VOLUME_LONG} de plásticos STR_QUANTITY_FIZZY_DRINKS :{COMMA} refresco{P "" s} @@ -131,39 +131,39 @@ STR_QUANTITY_N_A :N/A # Two letter abbreviation of cargo name STR_ABBREV_NOTHING : -STR_ABBREV_PASSENGERS :{TINY_FONT}PJ -STR_ABBREV_COAL :{TINY_FONT}CB -STR_ABBREV_MAIL :{TINY_FONT}CR -STR_ABBREV_OIL :{TINY_FONT}PT -STR_ABBREV_LIVESTOCK :{TINY_FONT}GN -STR_ABBREV_GOODS :{TINY_FONT}MC +STR_ABBREV_PASSENGERS :{TINY_FONT}PS +STR_ABBREV_COAL :{TINY_FONT}CA +STR_ABBREV_MAIL :{TINY_FONT}CO +STR_ABBREV_OIL :{TINY_FONT}PE +STR_ABBREV_LIVESTOCK :{TINY_FONT}GA +STR_ABBREV_GOODS :{TINY_FONT}ME STR_ABBREV_GRAIN :{TINY_FONT}GR -STR_ABBREV_WOOD :{TINY_FONT}MD -STR_ABBREV_IRON_ORE :{TINY_FONT}MH +STR_ABBREV_WOOD :{TINY_FONT}MA +STR_ABBREV_IRON_ORE :{TINY_FONT}HI STR_ABBREV_STEEL :{TINY_FONT}AC -STR_ABBREV_VALUABLES :{TINY_FONT}VA -STR_ABBREV_COPPER_ORE :{TINY_FONT}MC +STR_ABBREV_VALUABLES :{TINY_FONT}OV +STR_ABBREV_COPPER_ORE :{TINY_FONT}CB STR_ABBREV_MAIZE :{TINY_FONT}MZ -STR_ABBREV_FRUIT :{TINY_FONT}FT -STR_ABBREV_DIAMONDS :{TINY_FONT}DM +STR_ABBREV_FRUIT :{TINY_FONT}FR +STR_ABBREV_DIAMONDS :{TINY_FONT}DI STR_ABBREV_FOOD :{TINY_FONT}AL -STR_ABBREV_PAPER :{TINY_FONT}PP +STR_ABBREV_PAPER :{TINY_FONT}PA STR_ABBREV_GOLD :{TINY_FONT}OR STR_ABBREV_WATER :{TINY_FONT}AG -STR_ABBREV_WHEAT :{TINY_FONT}TG -STR_ABBREV_RUBBER :{TINY_FONT}GA +STR_ABBREV_WHEAT :{TINY_FONT}TR +STR_ABBREV_RUBBER :{TINY_FONT}CH STR_ABBREV_SUGAR :{TINY_FONT}AZ -STR_ABBREV_TOYS :{TINY_FONT}JG -STR_ABBREV_SWEETS :{TINY_FONT}DC +STR_ABBREV_TOYS :{TINY_FONT}JU +STR_ABBREV_SWEETS :{TINY_FONT}DU STR_ABBREV_COLA :{TINY_FONT}CL STR_ABBREV_CANDYFLOSS :{TINY_FONT}AA STR_ABBREV_BUBBLES :{TINY_FONT}BU -STR_ABBREV_TOFFEE :{TINY_FONT}JM +STR_ABBREV_TOFFEE :{TINY_FONT}CS STR_ABBREV_BATTERIES :{TINY_FONT}PI STR_ABBREV_PLASTIC :{TINY_FONT}PL -STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}RF -STR_ABBREV_NONE :{TINY_FONT}NO -STR_ABBREV_ALL :{TINY_FONT}TOD +STR_ABBREV_FIZZY_DRINKS :{TINY_FONT}RE +STR_ABBREV_NONE :{TINY_FONT}NADA +STR_ABBREV_ALL :{TINY_FONT}TODO # 'Mode' of transport for cargoes STR_PASSENGERS :{COMMA}{NBSP}pasajero{P "" s} @@ -212,7 +212,7 @@ STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}{NBSP}ga STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}{NBSP}l STR_UNITS_VOLUME_SHORT_SI :{COMMA}{NBSP}m³ -STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gal{P ón ones} +STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA}{NBSP} gal{P ón ones} STR_UNITS_VOLUME_LONG_METRIC :{COMMA}{NBSP}litro{P "" s} STR_UNITS_VOLUME_LONG_SI :{COMMA}{NBSP}m³ @@ -247,7 +247,7 @@ STR_TOOLTIP_RESIZE :{BLACK}Arrastra STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Cambiar entre tamaño de ventana grande o pequeño STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplazamiento (mueve la lista arriba o abajo) STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Barra de desplazamiento (mueve la lista izquierda o derecha) -STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. en un área de terreno. Ctrl permite trazar una diagonal para seleccionar un área cuadrada. Mayús muestra una estimación del precio +STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. en un área de terreno. Ctrl para seleccionar un área en diagonal. Mayús muestra una estimación del precio # Show engines button STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}Mostrar ocultos @@ -271,7 +271,7 @@ STR_OSK_KEYBOARD_LAYOUT_CAPS :°!"#$%&/()=?¡ # Measurement tooltip STR_MEASURE_LENGTH :{BLACK}Longitud: {NUM} -STR_MEASURE_AREA :{BLACK}Área: {NUM} x {NUM} +STR_MEASURE_AREA :{BLACK}Área: {NUM} × {NUM} STR_MEASURE_LENGTH_HEIGHTDIFF :{BLACK}Longitud: {NUM}{}Diferencia altura: {HEIGHT} STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Área: {NUM}×{NUM}{}Diferencia altura: {HEIGHT} @@ -598,8 +598,8 @@ STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPAN STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingeniero STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Director de Tráfico STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinador de Transporte -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisor de Ruta -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Directivo +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisor de Rutas +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Jefe STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Subdirector STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Director STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Presidente @@ -804,7 +804,7 @@ STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}¡Empresa de transporte en problemas! STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}¡{STRING} será vendida o declarada en bancarrota de no incrementar su desempeño pronto! -STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}¡Fusión de empresa de transportes! +STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}¡Fusión de empresas de transportes! STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}¡{STRING} fue vendida a {STRING} por {CURRENCY_LONG}! STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}¡En bancarrota! STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}¡{STRING} fue cerrada por sus acreedores y todos sus activos fueron vendidos! @@ -844,32 +844,32 @@ STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} tiene muy pocas órdenes en la lista STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} tiene una orden vacía STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} tiene órdenes duplicadas -STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} tiene en la lista una estación no válida -STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} tiene en la lista un aeropuerto con una pista muy corta +STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} tiene una estación no válida en la lista +STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} tiene un aeropuerto con una pista muy corta en la lista STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} se está haciendo viejo STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} se está haciendo muy viejo STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD_AND :{WHITE}{VEHICLE} se está haciendo muy viejo y requiere renovación urgente STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE} no encuentra una ruta para continuar STR_NEWS_VEHICLE_IS_LOST :{WHITE}{VEHICLE} se perdió -STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}La utilidad del año pasado del {VEHICLE} fue de {CURRENCY_LONG} +STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}La utilidad de {VEHICLE} el año pasado fue de {CURRENCY_LONG} STR_NEWS_AIRCRAFT_DEST_TOO_FAR :{WHITE}{VEHICLE} no puede llegar al siguiente destino porque no está a su alcance -STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} no avanza porque no pudo reequipar su carga +STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} no avanza porque no pudo reformarse STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Renovación automática fallida para {VEHICLE}{}{STRING} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLACK}¡Nuev{G o a} {STRING} ahora disponible! STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE} STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}¡Nuev{G o a} {STRING} ahora disponible! - {ENGINE} -STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} ya no recibe {STRING} -STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} ya no recibe {STRING} ni {STRING} -STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} recibe ahora {STRING} -STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} recibe ahora {STRING} y {STRING} +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} ya no acepta {STRING} +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} ya no acepta {STRING} ni {STRING} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} acepta ahora {STRING} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} acepta ahora {STRING} y {STRING} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta de subsidio vencida:{}{}{STRING} de {STRING} a {STRING} ya no está subsidiado STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidio retirado:{}{}El servicio de {STRING} desde {STRING} a {STRING} ya no está subsidiado -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Se ofrece subsidio.{}{}¡El primer servicio de {STRING} desde {STRING} a {STRING} tendrá subsidio durante un año parte del ayuntamiento local! +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Se ofrece subsidio.{}{}¡El primer servicio de {STRING} desde {STRING} a {STRING} tendrá subsidio durante un año por parte del ayuntamiento local! STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}¡Subsidio otorgado a {STRING}!{}{}¡El servicio de {STRING} desde {STRING} a {STRING} generará un 50% extra por un año! STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}¡Subsidio otorgado a {STRING}!{}{}¡El servicio de {STRING} desde {STRING} a {STRING} generará tasa doble durante un año! STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}¡Subsidio otorgado a {STRING}!{}{}¡El servicio de {STRING} desde {STRING} a {STRING} generará tasa triple durante un año! @@ -1108,7 +1108,7 @@ STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipo: STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Mostrar lista con opciones predeterminadas STR_CONFIG_SETTING_RESTRICT_BASIC :Básico (mostrar solo las opciones más esenciales) STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avanzado (mostrar la mayoría de las opciones) -STR_CONFIG_SETTING_RESTRICT_ALL :Experto (mostrar todas las opciones, hasta las más extrañas) +STR_CONFIG_SETTING_RESTRICT_ALL :Experto (mostrar todas las opciones, incluso las avanzadas) STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Opciones con un valor diferente al predeterminado STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Opciones con un valor diferente a las opciones de partida nueva @@ -1134,14 +1134,14 @@ STR_CONFIG_SETTING_COMPANIES_ALL :Todas las empre STR_CONFIG_SETTING_NONE :Ninguno STR_CONFIG_SETTING_ORIGINAL :Original -STR_CONFIG_SETTING_REALISTIC :Simulado +STR_CONFIG_SETTING_REALISTIC :Realista STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Izquierda STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centro STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Derecha STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Máximo préstamo inicial: {STRING} -STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Máxima cantidad que una empresa puede recibir como préstamo (sin tener en cuenta la inflación) +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Máxima cantidad que una empresa puede pedir prestada (sin tener en cuenta la inflación) STR_CONFIG_SETTING_INTEREST_RATE :Porcentaje de interés: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Porcentaje de interés de los préstamos; controla también la inflación, en caso de estar activada STR_CONFIG_SETTING_RUNNING_COSTS :Costos de operación: {STRING} @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ninguno STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Desplazamiento con botón izquierdo: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activar el desplazamiento del mapa al arrastrar con el botón izquierdo. Esto es especialmente útil al usar pantallas táctiles +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Cerrar ventana con clic derecho: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Cerrar la ventana haciendo clic derecho sobre ella. ¡Desactiva los mensajes de ayuda con clic derecho! STR_CONFIG_SETTING_AUTOSAVE :Guardado automático: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Intervalo entre guardados automáticos de la partida @@ -1790,9 +1792,9 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}¿Está # Cheat window STR_CHEATS :{WHITE}Trucos -STR_CHEATS_TOOLTIP :{BLACK}Las casillas verificadas indican que ya se usó este truco +STR_CHEATS_TOOLTIP :{BLACK}Las casillas marcadas indican que ya se usó este truco STR_CHEATS_WARNING :{BLACK}¡Atención! Estás a punto de traicionar a tus competidores. Recuerda que siempre se recordará tal deshonra -STR_CHEAT_MONEY :{LTBLUE}Recibir {CURRENCY_LONG} de dinero +STR_CHEAT_MONEY :{LTBLUE}Añadir {CURRENCY_LONG} en efectivo STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jugar como la empresa: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Excavadora mágica (elimina industrias y objetos inamovibles): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Los túneles se pueden cruzar: {ORANGE}{STRING} @@ -1808,18 +1810,18 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Cambiar STR_CHEAT_SETUP_PROD :{LTBLUE}Permitir cambiar los valores de producción: {ORANGE}{STRING} # Livery window -STR_LIVERY_CAPTION :{WHITE}Diseño de colores corporativos +STR_LIVERY_CAPTION :{WHITE}Nueva cromática -STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Mostrar diseño general de colores -STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Mostrar diseño general de colores para trenes -STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Mostrar diseño general de colores para vehículos de carretera -STR_LIVERY_SHIP_TOOLTIP :{BLACK}Mostrar diseño general de colores de colores para barcos -STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Mostrar diseño general de colores de colores para aeronaves -STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elegir el color principal para el diseño seleccionado. Ctrl+Clic para establecerlo como diseño general -STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elegir el color secundario para el diseño seleccionado. Ctrl+Clic para establecerlo como diseño general -STR_LIVERY_PANEL_TOOLTIP :{BLACK}Elegir un solo diseño de colores, o Ctrl+Clic para elegir varios. Verificar cada una casilla para establecer diferentes combinaciones según el tipo de vehículo +STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Mostrar cromática general +STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Mostrar cromáticas para trenes +STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}Mostrar cromáticas para vehículos de carretera +STR_LIVERY_SHIP_TOOLTIP :{BLACK}Mostrar cromáticas para barcos +STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Mostrar cromáticas para aeronaves +STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Elegir el color principal para la cromática elegida. Ctrl+Clic para establecerlo como cromática general +STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Elegir el color secundario para el diseño seleccionado. Ctrl+Clic para establecerlo como cromática general +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Elegir un solo tipo de cromática, o Ctrl+Clic para elegir varios. Marcar las casillas para establecer diferentes combinaciones según el tipo de vehículo -STR_LIVERY_DEFAULT :Diseño de colores estándar +STR_LIVERY_DEFAULT :Cromática estándar STR_LIVERY_STEAM :Locomotora a vapor STR_LIVERY_DIESEL :Locomotora de diésel STR_LIVERY_ELECTRIC :Locomotora eléctrica @@ -1855,7 +1857,7 @@ STR_FACE_FEMALE_BUTTON :{BLACK}Mujer STR_FACE_FEMALE_TOOLTIP :{BLACK}Elegir cara femenina STR_FACE_NEW_FACE_BUTTON :{BLACK}Nueva cara STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Generar cara al azar -STR_FACE_ADVANCED :{BLACK}Avanzada +STR_FACE_ADVANCED :{BLACK}Avanzado STR_FACE_ADVANCED_TOOLTIP :{BLACK}Selección avanzada de caras STR_FACE_SIMPLE :{BLACK}Simple STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selección simple de caras @@ -2189,7 +2191,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} cr STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} salió de la partida ({2:STRING}) STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} cambió su nombre a {STRING} STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} le dio a tu empresa {2:CURRENCY_LONG} -STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {2:CURRENCY_LONG} entregado a la empresa {1:STRING} +STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {2:CURRENCY_LONG} cedidos a la empresa {1:STRING} STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}El servidor ha cerrado la sesión STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Se está reiniciando el servidor...{}Espera por favor... @@ -2296,7 +2298,7 @@ STR_STATION_BUILD_COVERAGE_OFF :{BLACK}Desactiv STR_STATION_BUILD_COVERAGE_ON :{BLACK}Activado STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP :{BLACK}No mostrar área de recolección en el sitio planeado STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP :{BLACK}Mostrar área de recolección en el sitio planeado -STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Recibe: {GOLD}{CARGO_LIST} +STR_STATION_BUILD_ACCEPTS_CARGO :{BLACK}Acepta: {GOLD}{CARGO_LIST} STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Provee: {GOLD}{CARGO_LIST} # Join station window @@ -2473,9 +2475,9 @@ STR_STATION_BUILD_NOISE :{BLACK}Ruido ge # Landscaping toolbar STR_LANDSCAPING_TOOLBAR :{WHITE}Modificación de terreno -STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Disminuir una esquina del terreno. Al arrastrar el ratón se reduce la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl permite trazar una diagonal para seleccionar un área cuadrada. -STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar una esquina del terreno. Al arrastrar el ratón se eleva la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl permite trazar una diagonal para seleccionar un área cuadrada. Mayús muestra una estimación del precio -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivela un área de terreno a la altura de la primera esquina seleccionada. Ctrl permite trazar una diagonal para seleccionar un área cuadrada. Mayús muestra una estimación del precio +STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Disminuir una esquina del terreno. Al arrastrar el ratón se reduce la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl para seleccionar un área en diagonal. +STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar una esquina del terreno. Al arrastrar el ratón se eleva la primera esquina elegida y se nivela el resto del terreno seleccionado a dicha altura. Ctrl para seleccionar un área en diagonal. Mayús muestra una estimación del precio +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Nivela un área de terreno a la altura de la primera esquina seleccionada. Ctrl para seleccionar un área en diagonal. Mayús muestra una estimación del precio STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Comprar terreno para usos futuros. Mayús muestra una estimación del precio # Object construction window @@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno propied STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos los derechos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017, el equipo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018, el equipo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar partida @@ -2936,7 +2938,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Archivos q STR_NEWGRF_BROKEN :{WHITE}Es posible que el funcionamiento del NewGRF '{0:STRING}' cause desincronizaciones o errores STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Cambió el estado 'vagón con motor' para '{1:ENGINE}' cuando no estaba dentro de un depósito STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}cambió la longitud del vehículo para '{1:ENGINE}' cuando no estaba dentro de un depósito -STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Cambió la capacidad del vehículo para '{1:ENGINE}' cuando no estaba dentro de un depósito o mientras no se estaba reequipando +STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Cambió la capacidad del vehículo para '{1:ENGINE}' cuando no estaba dentro de un depósito o mientras no se estaba reformando STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tren '{VEHICLE}' perteneciente a '{COMPANY}' tiene una longitud no válida. Puede ser debido a problemas con los NewGRF. El juego puede fallar STR_NEWGRF_BUGGY :{WHITE}El NewGRF '{0:STRING}' da información incorrecta @@ -3095,7 +3097,7 @@ STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Ir a la STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Referencia a objetivos no válida # Station list window -STR_STATION_LIST_TOOLTIP :{BLACK}Nombres de estación: Clic en un nombre para centrar la vista principal en la estación. Ctrl+Clic abre una ventana de vista en dicha ubicación +STR_STATION_LIST_TOOLTIP :{BLACK}Nombres de estaciones: Clic en un nombre para centrar la vista principal en la estación. Ctrl+Clic abre una ventana de vista en dicha ubicación STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Mantener pulsado Ctrl para seleccionar más de un elemento STR_STATION_LIST_CAPTION :{WHITE}{COMPANY}: {COMMA} estaci{P ón ones} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} @@ -3111,12 +3113,12 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_L STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} en camino desde {STATION}) STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} reservado para cargar) -STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Recibe -STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Mostrar lista de cargamento recibido -STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Recibe: {WHITE}{CARGO_LIST} +STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Acepta +STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Lista de cargamento aceptado +STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Acepta: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estación tiene los derechos exclusivos de transporte en este pueblo. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} compró los derechos exclusivos de transporte en este pueblo. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Esta estación tiene los derechos exclusivos de transporte en este pueblo. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} compró los derechos exclusivos de transporte en este pueblo. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Evaluación STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Ver evaluación de la estación @@ -3129,11 +3131,11 @@ STR_STATION_VIEW_WAITING_AMOUNT :Cantidad: Esper STR_STATION_VIEW_PLANNED_STATION :Estación: Planeado STR_STATION_VIEW_PLANNED_AMOUNT :Cantidad: Planeado STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} desde {STATION} -STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} por {STATION} +STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} pasando por {STATION} STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} a {STATION} STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} desde estación desconocida STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} a cualquier estación -STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} por cualquier estación +STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} pasando por cualquier estación STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} con salida desde esta estación STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} se detendrá en esta estación STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} a esta estación @@ -3269,7 +3271,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tranvía STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Casillas de agua: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canales STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estaciones: -STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Casillas de estación +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Casillas de estaciones STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeropuertos STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/año @@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requiere STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requiere -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}esperando -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Requiere: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} esperando{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING} @@ -3368,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Quitar todos lo STR_GROUP_RENAME_CAPTION :{BLACK}Cambiar nombre del grupo +STR_GROUP_PROFIT_THIS_YEAR :Ganancias de este año: +STR_GROUP_PROFIT_LAST_YEAR :Ganancias del año pasado: +STR_GROUP_OCCUPANCY :Uso actual: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nuevos trenes STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nuevos trenes eléctricos @@ -3394,11 +3399,12 @@ STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Peso: {G STR_PURCHASE_INFO_COST_SPEED :{BLACK}Costo: {GOLD}{CURRENCY_LONG}{BLACK} Velocidad: {GOLD}{VELOCITY} STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacidad: {GOLD}{CARGO_LONG}, {CARGO_LONG} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagones con motor: {GOLD}+{POWER}{BLACK} Peso: {GOLD}+{WEIGHT_SHORT} -STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Reequipamiento: {GOLD}{STRING} +STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Reforma: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Todo tipo de carga STR_PURCHASE_INFO_ALL_BUT :Todo excepto {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Máx. fuerza de tracción: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} casillas +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de aeronave: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de selección trenes. Clic en un tren para más información. Ctrl+Clic para mostrar u ocultar el tipo de tren STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de selección de vehículos de carretera. Clic en un vehículo para más información. Ctrl+Clic para mostrar u ocultar el tipo del vehículo @@ -3532,10 +3538,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=f}locomotora STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Costo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidad: {VELOCITY} Potencia: {POWER}{}Costo de operación: {CURRENCY_LONG}/año{}Capacidad: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Costo: {CURRENCY_LONG} Peso: {WEIGHT_SHORT}{}Velocidad: {VELOCITY} Potencia: {POWER} Máx. F.T.: {6:FORCE}{}Costo de operación: {4:CURRENCY_LONG}/año{}Capacidad: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocidad máx.: {VELOCITY}{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Costo de mantenimiento: {CURRENCY_LONG}/año -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocidad máx.: {VELOCITY}{}Capacidad: {CARGO_LONG}{}Costo de mantenimiento: {CURRENCY_LONG}/año -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Costo: {CURRENCY_LONG} Velocidad máx.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Costo de operación: {CURRENCY_LONG}/año -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocidad máx.: {VELOCITY} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}{}Costo de operación: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Velocidad máx.: {VELOCITY}{}Capacidad: {CARGO_LONG}{}Costo de mantenimiento: {CURRENCY_LONG}/año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Vel. máx.: {VELOCITY}{}Tipo de aeronave: {STRING}{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Costo de operación: {CURRENCY_LONG} al año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Vel. máx.: {VELOCITY}{}Tipo de aeronave: {STRING}{}Capacidad: {CARGO_LONG}{}Costo de operación: {CURRENCY_LONG} al año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Vel. máx.: {VELOCITY}{}Tipo de aeronave: {STRING} Alcance: {COMMA} casillas{}Capacidad: {CARGO_LONG}, {CARGO_LONG}{}Costo de operación: {CURRENCY_LONG} al año +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Costo: {CURRENCY_LONG} Vel. máx.: {VELOCITY}{}Tipo de aeronave: {STRING} Alcance: {COMMA} tiles{}Capacidad: {CARGO_LONG}{}Costo de operación: {CURRENCY_LONG} al año # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplazar {STRING} - {STRING} @@ -3597,10 +3604,10 @@ STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}Esto com STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}Forzar al tren a proceder sin esperar a que la señal le ceda vía libre -STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Reequipar tren para transportar otro tipo de cargamento -STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reequipar vehículo de carretera para transportar otro tipo de cargamento -STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Reequipar barco para que transporte otro tipo de cargamento -STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reequipar aeronave para llevar otro tipo de cargamento +STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}Reformar tren para transportar otro tipo de cargamento +STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reformar vehículo de carretera para transportar otro tipo de cargamento +STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}Reformar barco para que transporte otro tipo de cargamento +STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reformar aeronave para llevar otro tipo de cargamento STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Cambiar dirección del tren STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Forzar al vehículo a girar en sentido opuesto @@ -3658,7 +3665,8 @@ 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 máx.: {LTBLUE}{VELOCITY} {BLACK}Alcance: {LTBLUE}{COMMA} casillas +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Vel. máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Vel. máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de aeronave: {LTBLUE}{STRING} {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} @@ -3712,35 +3720,35 @@ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Mostrar STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Capacidad: {LTBLUE} # Vehicle refit -STR_REFIT_CAPTION :{WHITE}{VEHICLE} (reequipar) +STR_REFIT_CAPTION :{WHITE}{VEHICLE} (reformar) STR_REFIT_TITLE :{GOLD}Elegir el nuevo tipo de cargamento: -STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}{}{BLACK}Costo por reequipar: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}{}{BLACK}Ingreso al reequipar: {GREEN}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Costo por reequipar: {RED}{CURRENCY_LONG} -STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Ingreso al reequipar: {GREEN}{CURRENCY_LONG} -STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Elegir los vehículos de ferrocarril a reequipar. Arrastrar con el ratón para elegir más de un vehículo. Clic en un espacio vacío para elegir el tren completo. Ctrl+Clic para elegir una unidad del tren y los vagones subsecuentes +STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}{}{BLACK}Costo por reformar: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}{}{BLACK}Ingreso al reformar: {GREEN}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Costo por reformar: {RED}{CURRENCY_LONG} +STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nueva capacidad: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Ingreso al reformar: {GREEN}{CURRENCY_LONG} +STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Elegir los vehículos de ferrocarril a reformar. Arrastrar con el ratón para elegir más de un vehículo. Clic en un espacio vacío para elegir el tren completo. Ctrl+Clic para elegir una unidad del tren y los vagones subsecuentes STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Elegir el tipo de cargamento para el tren STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Elegir el tipo de cargamento para el vehículo de carretera STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Elegir el tipo de cargamento para el barco STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Elegir el tipo de cargamento para la aeronave -STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Reequipar tren -STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Reequipar vehículo de carretera -STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Reequipar barco -STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Reequipar aeronave +STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Reformar tren +STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Reformar vehículo de carretera +STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Reformar barco +STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Reformar aeronave -STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Reequipar el tren para transportar el cargamento elegido -STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reequipar el vehículo de carretera para transportar el cargamento elegido -STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Reequipar el barco para transportar el cargamento elegido -STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reequipar la aeronave para transportar el cargamento elegido +STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}Reformar el tren para transportar el cargamento elegido +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Reformar el vehículo de carretera para transportar el cargamento elegido +STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Reformar el barco para transportar el cargamento elegido +STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Reformar la aeronave para transportar el cargamento elegido # Order view STR_ORDERS_CAPTION :{WHITE}{VEHICLE} (Órdenes) STR_ORDERS_TIMETABLE_VIEW :{BLACK}Itinerario STR_ORDERS_TIMETABLE_VIEW_TOOLTIP :{BLACK}Cambiar a la ventana de itinerarios -STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de órdenes: Clic en una orden para seleccionarla. Ctrl+Clic para desplazarse a la estación indicada en la orden +STR_ORDERS_LIST_TOOLTIP :{BLACK}Lista de órdenes: Clic en una orden para resaltarla. Ctrl+Clic para desplazarse a la estación indicada en la orden STR_ORDER_INDEX :{COMMA}:{NBSP} STR_ORDER_TEXT :{STRING} {STRING} {STRING} @@ -3751,28 +3759,28 @@ STR_ORDERS_END_OF_SHARED_ORDERS :- - Fin de órd STR_ORDER_NON_STOP :{BLACK}Sin paradas STR_ORDER_GO_TO :Ir a STR_ORDER_GO_NON_STOP_TO :Ir sin paradas a -STR_ORDER_GO_VIA :Ir por +STR_ORDER_GO_VIA :Pasar por STR_ORDER_GO_NON_STOP_VIA :Ir sin paradas por -STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Cambiar el comportamiento de parada en la orden elegida +STR_ORDER_TOOLTIP_NON_STOP :{BLACK}Cambiar la forma de parada en la orden resaltada -STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Llenar cualquier carga +STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Llenar cualquiera STR_ORDER_DROP_LOAD_IF_POSSIBLE :Cargar si hay disponible -STR_ORDER_DROP_FULL_LOAD_ALL :Llenar todas las cargas -STR_ORDER_DROP_FULL_LOAD_ANY :Llenar cualquier carga +STR_ORDER_DROP_FULL_LOAD_ALL :Llenar todo +STR_ORDER_DROP_FULL_LOAD_ANY :Llenar cualquiera STR_ORDER_DROP_NO_LOADING :No cargar -STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Cambiar el comportamiento de carga en la orden elegida +STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Cambiar la forma de carga en la orden resaltada STR_ORDER_TOGGLE_UNLOAD :{BLACK}Descargar todo -STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Descargar si es recibido +STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :Descargar si es aceptado STR_ORDER_DROP_UNLOAD :Descargar todo STR_ORDER_DROP_TRANSFER :Transferir STR_ORDER_DROP_NO_UNLOADING :No descargar -STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Cambiar el comportamiento de descarga en la orden elegida +STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Cambiar la forma de descarga en la orden resaltada -STR_ORDER_REFIT :{BLACK}Reequipar -STR_ORDER_REFIT_TOOLTIP :{BLACK}Elegir el tipo de cargamento a reequipar en esta orden. Ctrl+Clic para eliminar la orden -STR_ORDER_REFIT_AUTO :{BLACK}Reequipar en estación -STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Elegir el tipo de cargamento a reequipar en esta orden. Ctrl+Clic para eliminar la orden. Reequipar solo es posible si el vehículo lo permite +STR_ORDER_REFIT :{BLACK}Reformar +STR_ORDER_REFIT_TOOLTIP :{BLACK}Elegir el tipo de cargamento a reformar en esta orden. Ctrl+Clic para eliminar la orden +STR_ORDER_REFIT_AUTO :{BLACK}Reformar en estación +STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Elegir el tipo de cargamento a reformar en esta orden. Ctrl+Clic para eliminar la orden. Reformar solo es posible si el vehículo lo permite STR_ORDER_DROP_REFIT_AUTO :Cargamento fijo STR_ORDER_DROP_REFIT_AUTO_ANY :Cargamento disponible @@ -3796,21 +3804,21 @@ STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Tiempo de vida STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Comparación de los datos del vehículo respecto al valor dado STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :es igual a STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :no es igual a -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :es menos de -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :es menor o igual a -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :es más de -STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :es más o igual a +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :es menor que +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :es menor o igual que +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :es mayor que +STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :es mayor o igual a STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :es verdadero STR_ORDER_CONDITIONAL_COMPARATOR_IS_FALSE :es falso STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}El valor contra el cual comparar de los datos del vehículo -STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Indicar el valor contra el cual comparar +STR_ORDER_CONDITIONAL_VALUE_CAPT :{WHITE}Indicar el valor a comparar -STR_ORDERS_SKIP_BUTTON :{BLACK}Saltar -STR_ORDERS_SKIP_TOOLTIP :{BLACK}Ignorar la orden actual y saltar a la siguiente. Ctrl+Clic salta a la orden elegida +STR_ORDERS_SKIP_BUTTON :{BLACK}Ignorar +STR_ORDERS_SKIP_TOOLTIP :{BLACK}Ignorar la orden actual y proceder con la siguiente. Ctrl+Clic para iniciar la orden resaltada STR_ORDERS_DELETE_BUTTON :{BLACK}Eliminar -STR_ORDERS_DELETE_TOOLTIP :{BLACK}Eliminar orden marcada +STR_ORDERS_DELETE_TOOLTIP :{BLACK}Eliminar orden resaltada STR_ORDERS_DELETE_ALL_TOOLTIP :{BLACK}Eliminar todas las órdenes STR_ORDERS_STOP_SHARING_BUTTON :{BLACK}Dejar de compartir STR_ORDERS_STOP_SHARING_TOOLTIP :{BLACK}Dejar de compartir la lista de órdenes. Ctrl+Clic elimina también todas las órdenes de este vehículo @@ -3825,11 +3833,11 @@ STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Añadir STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Ver todos los vehículos que comparten el mismo itinerario # String parts to build the order string -STR_ORDER_GO_TO_WAYPOINT :Ir por {WAYPOINT} -STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ir sin paradas por {WAYPOINT} +STR_ORDER_GO_TO_WAYPOINT :Ir pasando por {WAYPOINT} +STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Ir sin paradas pasando por {WAYPOINT} STR_ORDER_SERVICE_AT :Mantenimiento en -STR_ORDER_SERVICE_NON_STOP_AT :Mantenimiento sin paradas en +STR_ORDER_SERVICE_NON_STOP_AT :Ir a sin paradas a mantenimiento en STR_ORDER_NEAREST_DEPOT :el más cercano STR_ORDER_NEAREST_HANGAR :el hangar más cercano @@ -3839,8 +3847,8 @@ STR_ORDER_SHIP_DEPOT :astillero de ba STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} -STR_ORDER_REFIT_ORDER :(Reequipar a {STRING}) -STR_ORDER_REFIT_STOP_ORDER :(Reequipar a {STRING} y detenerse) +STR_ORDER_REFIT_ORDER :(Reformar a {STRING}) +STR_ORDER_REFIT_STOP_ORDER :(Reformar a {STRING} y detenerse) STR_ORDER_STOP_ORDER :(Detenerse) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} @@ -3851,7 +3859,7 @@ STR_ORDER_FULL_LOAD :(Llenar todo) STR_ORDER_FULL_LOAD_ANY :(Llenar cualquiera) STR_ORDER_NO_LOAD :(No cargar) STR_ORDER_UNLOAD :(Descargar y cargar) -STR_ORDER_UNLOAD_FULL_LOAD :(Descargar y llenar) +STR_ORDER_UNLOAD_FULL_LOAD :(Descargar y llenar todo) STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Descargar y llenar cualquiera) STR_ORDER_UNLOAD_NO_LOAD :(Descargar y dejar vacío) STR_ORDER_TRANSFER :(Transferir y cargar) @@ -3859,22 +3867,22 @@ STR_ORDER_TRANSFER_FULL_LOAD :(Transferir y l STR_ORDER_TRANSFER_FULL_LOAD_ANY :(Transferir y llenar cualquiera) STR_ORDER_TRANSFER_NO_LOAD :(Transferir y dejar vacío) STR_ORDER_NO_UNLOAD :(No descargar y cargar) -STR_ORDER_NO_UNLOAD_FULL_LOAD :(No descargar y llenar) +STR_ORDER_NO_UNLOAD_FULL_LOAD :(No descargar y llenar todo) STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No descargar y llenar cualquiera) STR_ORDER_NO_UNLOAD_NO_LOAD :(No descargar ni cargar) -STR_ORDER_AUTO_REFIT :(Reequipar a {STRING}) -STR_ORDER_FULL_LOAD_REFIT :(Reequipar a {STRING} y llenar) -STR_ORDER_FULL_LOAD_ANY_REFIT :(Reequipar a {STRING} y llenar cualquiera) -STR_ORDER_UNLOAD_REFIT :(Descargar y cargar con reequipamiento a {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descargar y llenar con reequipamiento a {STRING}) -STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descargar y llenar cualquiera con reequipamiento a {STRING}) -STR_ORDER_TRANSFER_REFIT :(Transferir y cargar con reequipamiento a {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir y llenar con reequipamiento a {STRING}) -STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir y llenar cualquiera con reequipamiento a {STRING}) -STR_ORDER_NO_UNLOAD_REFIT :(No descargar y cargar con reequipamiento a {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No descargar y llenar con reequipamiento a {STRING}) -STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No descargar y llenar cualquiera con reequipamiento a {STRING}) +STR_ORDER_AUTO_REFIT :(Reformar a {STRING}) +STR_ORDER_FULL_LOAD_REFIT :(Llenar todo y reformar a{STRING}) +STR_ORDER_FULL_LOAD_ANY_REFIT :(Llenar cualquiera y reformar a {STRING}) +STR_ORDER_UNLOAD_REFIT :(Descargar y cargar con reforma a {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descargar y llenar todo con reforma a {STRING}) +STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descargar y llenar cualquiera con reforma a {STRING}) +STR_ORDER_TRANSFER_REFIT :(Transferir y cargar con reforma a {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir y llenar con reforma a {STRING}) +STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir y llenar cualquiera con reforma a {STRING}) +STR_ORDER_NO_UNLOAD_REFIT :(No descargar y cargar con reforma a {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No descargar y llenar todo con reforma a {STRING}) +STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No descargar y llenar cualquiera con reforma a {STRING}) STR_ORDER_AUTO_REFIT_ANY :cargamento disponible @@ -3882,7 +3890,7 @@ STR_ORDER_STOP_LOCATION_NEAR_END :[principio] STR_ORDER_STOP_LOCATION_MIDDLE :[centro] STR_ORDER_STOP_LOCATION_FAR_END :[fondo] -STR_ORDER_OUT_OF_RANGE :{RED} (El sig. destino está legos del alcance) +STR_ORDER_OUT_OF_RANGE :{RED} (El siguiente destino está muy lejos) STR_ORDER_CONDITIONAL_UNCONDITIONAL :Saltar a orden {COMMA} STR_ORDER_CONDITIONAL_NUM :Saltar a orden {COMMA} cuando {STRING} {STRING} {COMMA} @@ -3906,9 +3914,9 @@ STR_TIMETABLE_TRAVEL_FOR_SPEED :Viajar durante STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viajar (durante {STRING}, no programado) STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viajar (durante {STRING}, no programado) a {VELOCITY} como máximo STR_TIMETABLE_STAY_FOR_ESTIMATED :(esperar {STRING}, no programado) -STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viajar por {STRING}, no programado) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viajar {STRING}, no programado) STR_TIMETABLE_STAY_FOR :y esperar {STRING} -STR_TIMETABLE_AND_TRAVEL_FOR :y viajar por {STRING} +STR_TIMETABLE_AND_TRAVEL_FOR :y viajar {STRING} STR_TIMETABLE_DAYS :{COMMA}{NBSP}día{P "" s} STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s} @@ -3939,8 +3947,8 @@ STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Borrar e STR_TIMETABLE_RESET_LATENESS :{BLACK}Reiniciar retrasos STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reiniciar el contador del retraso para que el vehículo vaya a tiempo -STR_TIMETABLE_AUTOFILL :{BLACK}Rellenar automáticamente -STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Rellenar la tabla de itinerarios automáticamente con los valores del siguiente recorrido (Ctrl+Clic para intentar mantener los tiempos de espera) +STR_TIMETABLE_AUTOFILL :{BLACK}Llenar automáticamente +STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Llenar la tabla de itinerarios automáticamente con los valores del siguiente recorrido (Ctrl+Clic para intentar mantener los tiempos de espera) STR_TIMETABLE_EXPECTED :{BLACK}Esperado STR_TIMETABLE_SCHEDULED :{BLACK}Programado @@ -4090,7 +4098,7 @@ STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... no h STR_ERROR_PNGMAP :{WHITE}No se puede cargar mapa desde PNG... STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... archivo no encontrado STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... no se pudo convertir el tipo de imagen. Se requieren imágenes PNG de 8 o 24 bits -STR_ERROR_PNGMAP_MISC :{WHITE}... algo salió mal (quizá el archivo esté tenga errores) +STR_ERROR_PNGMAP_MISC :{WHITE}... algo salió mal (quizá el archivo está dañado) STR_ERROR_BMPMAP :{WHITE}No se pudo cargar mapa desde BMP... STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... no se pudo convertir el tipo de imagen @@ -4117,13 +4125,13 @@ STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Mensaje # Generic construction errors STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Fuera del borde del mapa STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Demasiado cerca del borde del mapa -STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}No hay suficiente dinero: se requieren {CURRENCY_LONG} +STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}No alcanza el dinero: se necesitan {CURRENCY_LONG} STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Se requiere terreno plano STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Tierra inclinada en dirección errónea STR_ERROR_CAN_T_DO_THIS :{WHITE}No se puede hacer eso... STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Primero se debe demoler el edificio STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}No se puede despejar esta zona... -STR_ERROR_SITE_UNSUITABLE :{WHITE}... lugar no apropiado +STR_ERROR_SITE_UNSUITABLE :{WHITE}... lugar no apto STR_ERROR_ALREADY_BUILT :{WHITE}... ya construido STR_ERROR_OWNED_BY :{WHITE}... propiedad de {STRING} STR_ERROR_AREA_IS_OWNED_BY_ANOTHER :{WHITE}... otra empresa es dueña de esta área @@ -4164,7 +4172,7 @@ STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}No se pu STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}No se puede construir la sede de la empresa... STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}No se puede comprar el 25% de acciones... STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}No se puede vender el 25% de acciones... -STR_ERROR_PROTECTED :{WHITE}Esta empresa es aún muy reciente para comerciar con acciones... +STR_ERROR_PROTECTED :{WHITE}Esta empresa es muy reciente para comerciar con acciones... # Town related errors STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}No se puede crear ningún pueblo @@ -4175,10 +4183,10 @@ STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... dema STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... demasiado cerca de otro pueblo STR_ERROR_TOO_MANY_TOWNS :{WHITE}... demasiados pueblos STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... ya no hay espacio en el mapa -STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}El pueblo no construirá carreteras. La función de construcción de carreteras puede activarse Configuración->Ambiente->Pueblos +STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}El pueblo no construirá carreteras. La función de construcción de carreteras puede activarse en Configuración->Ambiente->Pueblos STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obras de carretera en progreso STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}No se puede eliminar este pueblo...{}Quedan estaciones o depósitos relacionados con él, o una propiedad suya no puede ser retirada -STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no hay lugar apropiado para una estatua en el centro de esta pueblo +STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... no hay ningún lugar apto para una estatua en el centro de este pueblo # Industry related errors STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... demasiadas industrias @@ -4199,8 +4207,8 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... los STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... solo se puede construir por encima del nivel de nieve STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... solo se puede construir por debajo del nivel de nieve -STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}No hubo sitios apropiados para industrias '{STRING}' -STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Cambia los parámetros de generación para obtener un mejor mapa +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}No hubo espacio para industrias de tipo "{STRING}" +STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES_EXPLANATION :{WHITE}Cambia las opciones de generación para crear un mejor mapa # Station construction related errors STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}No se puede construir la estación de tren aquí... @@ -4217,7 +4225,7 @@ STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Demasiad STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Demasiadas partes de estación de tren STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}Demasiadas paradas de autobuses STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Demasiadas estaciones de camiones -STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Demasiado cerca de otra estación de pasajeros o carga +STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Demasiado cerca de otra estación o zona de carga STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Demasiado cerca de otro muelle STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Demasiado cerca de otro aeropuerto STR_ERROR_CAN_T_RENAME_STATION :{WHITE}No se puede cambiar nombre de la estación... @@ -4270,14 +4278,14 @@ STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... pued STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... puede que esté detenido dentro de un astillero STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... puede que esté detenido dentro de un hangar -STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Los trenes únicamente pueden modificarse si están detenidos dentro de un depósito +STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}Los trenes pueden modificarse solo si están detenidos dentro de un depósito STR_ERROR_TRAIN_TOO_LONG :{WHITE}Tren demasiado largo STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}No se puede cambiar dirección del vehículo... STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}... vehículo compuesto por múltiples unidades STR_ERROR_INCOMPATIBLE_RAIL_TYPES :Los tipos de vías férreas no son compatibles STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}No se puede mover vehículo... -STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}El motor posterior debe seguir siempre al delantero +STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}La locomotora trasera debe conectarse a la delantera STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}No se puede encontrar ruta al depósito STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}No se puede encontrar depósito @@ -4349,14 +4357,14 @@ STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}No se pu STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Lugar no apto para entrada de túnel STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Primero se debe demoler el túnel STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Otro túnel obstaculiza -STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}El túnel terminaría fuera del mapa +STR_ERROR_TUNNEL_THROUGH_MAP_BORDER :{WHITE}El túnel se extendería más allá del mapa STR_ERROR_UNABLE_TO_EXCAVATE_LAND :{WHITE}No se puede excavar la tierra al otro lado del túnel STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... túnel demasiado largo # Object related errors STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... demasiados objetos STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}No se puede colocar objeto... -STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Otro objeto obstaculiza +STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Otro objeto estorba STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... la sede de la empresa obstaculiza STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}No es posible adquirir este terreno... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... ¡ya fue adquirido por el jugador! @@ -4371,15 +4379,15 @@ STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}No se pu STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}No se pueden añadir vehículos compartidos al grupo... # Generic vehicle errors -STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tren obstaculiza -STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Vehículo de carretera obstaculiza -STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Barco obstaculiza +STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}Tren estorba +STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Vehículo de carretera estorba +STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Barco estorba STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Aeronave obstaculiza -STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}No se puede reequipar tren... -STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}No se puede reequipar vehículo de carretera... -STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}No se puede reequipar barco... -STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}No se puede reequipar aeronave... +STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}No se puede reformar tren... +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}No se puede reformar vehículo de carretera... +STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}No se puede reformar barco... +STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}No se puede reformar aeronave... STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}No se puede cambiar nombre del tren... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}No se puede cambiar nombre del vehículo... @@ -4457,7 +4465,7 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... la a # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}No se pueden asignar itinerarios al vehículo... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Los vehículos solo pueden esperar en estaciones -STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este vehículo se detendrá en esta estación +STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este vehículo no se detendrá en esta estación # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... demasiados carteles @@ -4485,7 +4493,7 @@ STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Edificio de ofi STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Conjunto habitacional pequeño STR_TOWN_BUILDING_NAME_CHURCH_1 :Iglesia STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Complejo de oficinas -STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas de pueblo +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas adosadas STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Estatua STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fuente @@ -4574,7 +4582,7 @@ STR_SV_STNAME_TRANSFER :Transferencia { STR_SV_STNAME_HALT :Parada {STRING} STR_SV_STNAME_VALLEY :Valle de {STRING} STR_SV_STNAME_HEIGHTS :Altos de {STRING} -STR_SV_STNAME_WOODS :Alameda de {STRING} +STR_SV_STNAME_WOODS :Bosques de {STRING} STR_SV_STNAME_LAKESIDE :Lago de {STRING} STR_SV_STNAME_EXCHANGE :Intercambio {STRING} STR_SV_STNAME_AIRPORT :Aeropuerto de {STRING} diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 745e8c5f23..33f18791db 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -10,7 +10,7 @@ ##grflangid 0x2e -# $Id: swedish.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: swedish.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Av STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrolla med vänster musknappsklick: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Aktivera skrollning av kartan genom att dra den med den vänstra musknappen. Detta är särskilt användbart för skrollning vid användning av en pekskärm +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Stäng fönster med högerklick: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Stänger fönster när man högerklickar inuti dem. Denna inställning inaktiverar tooltips vid högerklick! STR_CONFIG_SETTING_AUTOSAVE :Autospara: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Välj intervall mellan automatisk sparande @@ -2689,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Mark som ägs a STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Ursprunglig upphovsrätt {COPYRIGHT} 1995 Chris Sawyer, Alla rättigheter hävdas STR_ABOUT_VERSION :{BLACK}OpenTTD-version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spara spel @@ -3114,8 +3116,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Accepter STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Visa lista över accepterat gods STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Accepterar: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Den här stationen har exklusiva transporträttigheter i den här staden. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} har köpt exklusiva transporträttigheter i den här staden. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Den här stationen har exklusiva transporträttigheter i den här staden. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} har köpt exklusiva transporträttigheter i den här staden. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Värderingar STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Visa stationens klassificering @@ -3294,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Kräver: STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Kräver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Kräver -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}väntar -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Kräver: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} väntar{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Producerar: {YELLOW}{STRING}{STRING} @@ -3367,6 +3367,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Ta bort alla fo STR_GROUP_RENAME_CAPTION :{BLACK}Döp om en grupp +STR_GROUP_PROFIT_THIS_YEAR :Vinst i år: +STR_GROUP_PROFIT_LAST_YEAR :Vinst förra året: +STR_GROUP_OCCUPANCY :Nuvarande användning: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nytt tågfordon STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nya elektriska järnvägsfordon @@ -3398,6 +3403,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Alla typer av l STR_PURCHASE_INFO_ALL_BUT :Allt utom {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maximal Dragkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Räckvidd: {GOLD}{COMMA} rutor +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Flygplanstyp: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista av tågvagnar. Klicka på tågvagn för information. Ctrl+klick visar eller döljer vagnstypen STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vägfordonslista. Klicka på fordon för information. Ctrl+klick visar eller döljer fordonstypen @@ -3531,10 +3537,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev-lok STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kostnad: {CURRENCY_LONG} Vikt: {WEIGHT_SHORT}{}Hastighet: {VELOCITY} Kraft {POWER}{}Löpande kostnad: {CURRENCY_LONG}/år{}Kapacitet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Kostnad: {CURRENCY_LONG} Vikt: {WEIGHT_SHORT}{}Hastighet: {VELOCITY} Effekt: {POWER} Max. T.E.: {6:FORCE}{}Löpande kostnad: {4:CURRENCY_LONG}/år{}Kapacitet: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastiget: {VELOCITY}{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Körkostnad: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastiget: {VELOCITY}{}Kapacitet: {CARGO_LONG}{}Körkostnad: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Kostnad: {CURRENCY_LONG} Maxhastighet: {VELOCITY} Räckvidd: {COMMA} rutor{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Driftkostnad: {CURRENCY_LONG}/år -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastighet: {VELOCITY} Räckvidd: {COMMA} rutor{}Kapacitet: {CARGO_LONG}{}Driftkostnad: {CURRENCY_LONG}/yr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastiget: {VELOCITY}{}Kapacitet: {CARGO_LONG}{}Körkostnad: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastighet: {VELOCITY}{}Flygplanstyp: {STRING}{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Körkostnad: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastighet: {VELOCITY}{}Flygplanstyp: {STRING}{}Kapacitet: {CARGO_LONG}{}Körkostnad: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastighet: {VELOCITY}{}Flygplanstyp: {STRING} Räckvidd: {COMMA} rutor{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Körkostnad: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Kostnad: {CURRENCY_LONG} Maxhastighet: {VELOCITY}{}Flygplanstyp: {STRING} Räckvidd: {COMMA} rutor{}Kapacitet: {CARGO_LONG}{}Körkostnad: {CURRENCY_LONG}/år # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Byt ut {STRING} - {STRING} @@ -3657,7 +3664,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} år ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maxhastiget: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Maxhastighet: {LTBLUE}{VELOCITY} {BLACK}Räckvidd: {LTBLUE}{COMMA} rutor +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maxhastighet: {LTBLUE}{VELOCITY} {BLACK}Flygplanstyp: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Maxhastighet: {LTBLUE}{VELOCITY} {BLACK}Flygplanstyp: {LTBLUE}{STRING} {BLACK}Räckvidd: {LTBLUE}{COMMA} rutor STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vikt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maxhastiget: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vikt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maxhastiget: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 1baa96c7b6..cd9b7591e7 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -10,7 +10,7 @@ ##grflangid 0x0a -# $Id: tamil.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: tamil.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2378,7 +2378,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :நிறுவ STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ஐ பற்றி STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}அசல் உரிமைகள் {COPYRIGHT} 1995 கிறிஸ் சாயர், எல்லா உரிமைகளும் பதிவுசெய்யப்பட்டது STR_ABOUT_VERSION :{BLACK}OpenTTD பதிப்பு {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD குழுமம் +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD குழுமம் # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ஆட்டத்தை பதிவு செய் @@ -2747,8 +2747,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}ஏற STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}ஏற்றுக்கொள்ளப்படும் சரக்குகளின் பட்டியலினைக் காட்டு STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}ஏற்றுக்கொள்பவை: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}இந்த நிலையம் இந்த நகரின் முழு போக்குவரத்து உரிமைகளையும் பெற்றுள்ளது. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} இந்த நகரின் மொத்த போக்குவரத்து உரிமைகளையும் வாங்கியது. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}இந்த நிலையம் இந்த நகரின் முழு போக்குவரத்து உரிமைகளையும் பெற்றுள்ளது. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} இந்த நகரின் மொத்த போக்குவரத்து உரிமைகளையும் வாங்கியது. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}தரங்கள் STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}நிலைய தரத்தினைக் காட்டவும் @@ -2976,6 +2976,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :அனைத் STR_GROUP_RENAME_CAPTION :{BLACK}குழுவின் பெயரினை மாற்றவும் + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :புது இரயில் வாகனங்கள் STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :புது மின்சார இரயில் வாகனங்கள் @@ -3118,10 +3119,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :மேக்ல STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}செலவு: {CURRENCY_LONG} எடை: {WEIGHT_SHORT}{}வேகம்: {VELOCITY} திறன்: {POWER}{}ஓட்டுவதற்கான செலவு: {CURRENCY_LONG}/வரு{}கொள்ளளவு: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}செலவு: {CURRENCY_LONG} எடை: {WEIGHT_SHORT}{}வேகம்: {VELOCITY} திறன்: {POWER} அதி. T.E.: {6:FORCE}{}ஓட்டுவதற்கான செலவு: {4:CURRENCY_LONG}/வரு{}கொள்ளளவு: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY}{}கொள்ளளவு: {CARGO_LONG}, {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY}{}கொள்ளளவு: {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY} எல்லை: {COMMA} கட்டங்கள்{}கொள்ளளவு: {CARGO_LONG}, {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY} வரையறை: {COMMA} கட்டங்கள்{}கொள்ளளவு: {CARGO_LONG}{}இயக்குவதற்கான செலவு: {CURRENCY_LONG}/வரு +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}செலவு: {CURRENCY_LONG} அதி. வேகம்: {VELOCITY}{}கொள்ளளவு: {CARGO_LONG}{}ஓட்டும் செலவு: {CURRENCY_LONG}/ஆண்டிற்கு # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}மாற்று {STRING} - {STRING} @@ -3228,7 +3226,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} வர STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} வருடம்{P "" கள்} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}அதி. வேகம்: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}அதி. வேகம்: {LTBLUE}{VELOCITY} {BLACK}வரையறை: {LTBLUE}{COMMA} கட்டங்கள் STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}எடை: {LTBLUE}{WEIGHT_SHORT} {BLACK}திறன்: {LTBLUE}{POWER}{BLACK} அதி. வேகம்: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}எடை: {LTBLUE}{WEIGHT_SHORT} {BLACK}திறன்: {LTBLUE}{POWER}{BLACK} அதி. வேகம்: {LTBLUE}{VELOCITY} {BLACK}அதி. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/thai.txt b/src/lang/thai.txt index df89c8da4b..7af7a5b901 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -10,7 +10,7 @@ ##grflangid 0x42 -# $Id: thai.txt 27865 2017-05-03 20:43:22Z frosch $ +# $Id: thai.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2635,7 +2635,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :บริษั STR_ABOUT_OPENTTD :{WHITE}เกี่ยวกับ OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}ลิขสิทธิ์เดิม {COPYRIGHT} ค.ศ.1995 ของ Chris Sawyer, สงวนลิขสิทธิ์ STR_ABOUT_VERSION :{BLACK}OpenTTD รุ่นที่ {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2017 ของ The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2018 ของ The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}บันทึกเกม @@ -3044,8 +3044,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}ปิ STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}ปิดหน้าต่างความนิยมลงและแสดงเฉพาะรายการสินค้าที่สถานีรองรับและรอการขนส่ง STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}กำลังต้องการ: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}สถานนีนี้มีสัมปทานขนส่งจากเมืองนี้ -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ซื้อสัมปทานขนส่งที่เมืองนี้ +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}สถานนีนี้มีสัมปทานขนส่งจากเมืองนี้ +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} ซื้อสัมปทานขนส่งที่เมืองนี้ STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}ความพึงพอใจ STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}แสดงความพึงพอใจของสถานี @@ -3290,6 +3290,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :ลบยาน STR_GROUP_RENAME_CAPTION :{BLACK}เปลี่ยนชื่อกลุ่ม + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :รถไฟใหม่ STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :รถไฟฟ้าใหม่ @@ -3446,10 +3447,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :รถไฟร STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}มูลค่า: {CURRENCY_LONG} น้ำหนัก: {WEIGHT_SHORT}{}ความเร็ว: {VELOCITY}พลังขับเคลื่อน: {POWER}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี{}ความจุ: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}มูลค่า: {CURRENCY_LONG} น้ำหนัก: {WEIGHT_SHORT}{}ความเร็ว: {VELOCITY}พลังขับเคลื่อน: {POWER} กำัลังลากจูงสูงสุด: {6:FORCE}{}ค่าปฎิบัติการ: {4:CURRENCY_LONG}/ปี{}ความจุ: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY}{}ความจุ: {CARGO_LONG}, {CARGO_LONG}{}ค่าปฎิบัติการ: {CURRENCY_LONG}/ปี -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY}{}ความจุ: {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY} พิสัย: {COMMA} ช่อง{}ความจุ: {CARGO_LONG}, {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY} พิสัย: {COMMA} tiles{}ความจุ: {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}มูลค่า: {CURRENCY_LONG} ความเร็วสูงสุด: {VELOCITY}{}ความจุ: {CARGO_LONG}{}ค่าปฏิบัติการ: {CURRENCY_LONG}/ปี # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}เปลี่ยน {STRING} - {STRING} @@ -3568,7 +3566,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} ปี STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ปี ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}ความเร็วสูงสุด: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}ความเร็วสูงสุด: {LTBLUE}{VELOCITY} {BLACK}พิสัย: {LTBLUE}{COMMA} ช่อง STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}น้ำหนัก: {LTBLUE}{WEIGHT_SHORT} {BLACK}พลังขับเคลื่อน: {LTBLUE}{POWER}{BLACK} ความเร็วสูงสุด: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}น้ำหนัก: {LTBLUE}{WEIGHT_SHORT} {BLACK}พลังขับเคลื่อน: {LTBLUE}{POWER}{BLACK} ความเร็วสูงสุด: {LTBLUE}{VELOCITY} {BLACK}กำลังลากจูงสูงสุด: {LTBLUE}{FORCE} diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index b8ef6c7527..e847108d86 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -10,7 +10,7 @@ ##grflangid 0x0c -# $Id: traditional_chinese.txt 27865 2017-05-03 20:43:22Z frosch $ +# $Id: traditional_chinese.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司所有土 STR_ABOUT_OPENTTD :{WHITE}關於 OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原著作權為 {COPYRIGHT} 1995 Chris Sawyer,保留所有權利 STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD 開發小組 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 開發小組 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}儲存遊戲 @@ -3112,8 +3112,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}接受 STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}顯示接受的貨物種類 STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}接受:{WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}此車站享有所屬市鎮的專屬運輸權 -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK}已購買此市鎮的專屬運輸權 +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}此車站享有所屬市鎮的專屬運輸權 +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK}已購買此市鎮的專屬運輸權 STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}評價 STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}顯示車站評價 @@ -3360,6 +3360,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :移去所有運 STR_GROUP_RENAME_CAPTION :{BLACK}重新命名群組 + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :新購鐵路列車 STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :新購電氣化列車 @@ -3524,10 +3525,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :磁浮機車頭 STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}費用:{CURRENCY_LONG} 載重:{WEIGHT_SHORT}{}速度:{VELOCITY} 功率:{POWER}{}營運成本:{CURRENCY_LONG} / 年{}容量:{CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}費用:{CURRENCY_LONG} 載重:{WEIGHT_SHORT}{}速度:{VELOCITY} 功率:{POWER} 最大牽引力:{6:FORCE}{}營運成本:{4:CURRENCY_LONG}/年{}容量:{5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}費用:{CURRENCY_LONG} 最高速度:{VELOCITY}{}容量:{CARGO_LONG}, {CARGO_LONG}{}營運成本:{CURRENCY_LONG}/年 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}費用:{CURRENCY_LONG} 最高速度:{VELOCITY}{}容量:{CARGO_LONG}{}營運成本:{CURRENCY_LONG}/年 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}成本: {CURRENCY_LONG} 最高速度: {VELOCITY} 範圍: {COMMA} 格{}容量: {CARGO_LONG}, {CARGO_LONG}{}營運成本: {CURRENCY_LONG}/年 -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}成本: {CURRENCY_LONG} 最高速度: {VELOCITY} 範圍: {COMMA} 格{}容量: {CARGO_LONG}{}營運成本: {CURRENCY_LONG}/年 +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}費用:{CURRENCY_LONG} 最高速度:{VELOCITY}{}容量:{CARGO_LONG}{}營運成本:{CURRENCY_LONG}/年 # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}替換 {STRING} - {STRING} @@ -3649,7 +3647,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} 年 ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} 年 ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最高速度:{LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}最高速度: {LTBLUE}{VELOCITY} {BLACK}範圍: {LTBLUE}{COMMA} 格 STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}載重:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最高速度:{LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}載重:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最高速度:{LTBLUE}{VELOCITY} {BLACK}最大牽引力:{LTBLUE}{FORCE} diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 0d9bda7a2f..109b572172 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -11,7 +11,7 @@ ##case tamlanan -# $Id: turkish.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: turkish.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Kapalı STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Sol tık ile ekran kaydır: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Sol fare tuşuyla sürükleyerek harita kaydırma özelliğini etkinleştir. Özellikle dokunmatik-ekran kullanırken kaydırma yapmak için kullanılabilir. +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Sağ tıklama ile pencereyi kapat: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :İçerisinde sağ tıklandığında pencereyi kapatır. Sağ tıklandığında ipuçları gösterimini devre dışı bırakır! STR_CONFIG_SETTING_AUTOSAVE :Otomatik kaydet: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Otomatik oyun kaydetme sıklığını seçin @@ -2690,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Satın alınmı STR_ABOUT_OPENTTD :{WHITE}OpenTTD Hakkında STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Telif hakkı {COPYRIGHT} 1995 Chris Sawyer, Her hakkı saklıdır STR_ABOUT_VERSION :{BLACK}OpenTTD sürüm {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD ekibi +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD ekibi # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Oyunu Kaydet @@ -3115,8 +3117,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}İstenen STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}İstenen kargoların listesini göster STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}İstenen: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Bu istasyon şehrin ulaşım haklarına sahip. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bu şehirdeki ulaşım haklarını satın aldı. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Bu istasyon şehrin ulaşım haklarına sahip. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} bu şehirdeki ulaşım haklarını satın aldı. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Değerlendirmeler STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}İstasyon değerlendirmelerini göster @@ -3295,11 +3297,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}İstenen STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}İstenenler: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Gereken -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}bekliyor -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Gereken: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} bekliyor{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Üretir: {YELLOW}{STRING}{STRING} @@ -3368,6 +3368,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Bütün araçla STR_GROUP_RENAME_CAPTION :{BLACK}Grubun ismini değiştir +STR_GROUP_PROFIT_THIS_YEAR :Bu yılki kar: +STR_GROUP_PROFIT_LAST_YEAR :Geçen yılki kar: +STR_GROUP_OCCUPANCY :Şu anki kullanım: +STR_GROUP_OCCUPANCY_VALUE :%{NUM} + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Yeni Tren STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Yeni Elektrikli Trenler @@ -3399,6 +3404,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Tüm kargo tür STR_PURCHASE_INFO_ALL_BUT :Şunlar hariç tümü: {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Aza. Çekim Gücü: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Menzil: {GOLD}{COMMA} kare +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Uçak türü: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Tren seçim listesi. Bilgi için araç tıklayın. Ctrl+Tıklama araç türünün gizlenmesini açar/kapatır STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Karayolu araçları seçim listesi. Bilgi için araca tıklayın. Ctrl+Tıklama araç türünün gizlenmesini açar/kapatır @@ -3532,10 +3538,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomoti STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Fiyat: {CURRENCY_LONG} Ağırlık: {WEIGHT_SHORT}{}Hız: {VELOCITY} Güç: {POWER}{}İşletme Gideri: {CURRENCY_LONG}/yıl{}Kapasite: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Maliyet: {CURRENCY_LONG} Ağırlık: {WEIGHT_SHORT}{}Hız: {VELOCITY} Güç: {POWER} Azami Tork: {6:FORCE}{}İşletme Gideri: {4:CURRENCY_LONG}/yıl{}Kapasite: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Kapasite: {CARGO_LONG}, {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Kapasite: {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY} Menzil: {COMMA} kare{}Kapasite: {CARGO_LONG}, {CARGO_LONG}{}Çalışma gideri: {CURRENCY_LONG}/yıl -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY} Menzil: {COMMA} kare{}Kapasite: {CARGO_LONG}{}Çalışma gideri: {CURRENCY_LONG}/yıl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Kapasite: {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Uçak türü: {STRING}{}Kapasite: {CARGO_LONG}, {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Uçak türü: {STRING}{}Kapasite: {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}//yıl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Uçak türü: {STRING} Menzil: {COMMA} kare{}Kapasite: {CARGO_LONG}, {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Uçak türü: {STRING} Menzil: {COMMA} kare{}Kapasite: {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Değiştir {STRING} - {STRING} @@ -3658,7 +3665,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} sene ({ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} sene ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Azami Hız: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Azami hız: {LTBLUE}{VELOCITY} {BLACK}Menzil: {LTBLUE}{COMMA} kare +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Azami hız: {LTBLUE}{VELOCITY} {BLACK}Uçak türü: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Azami hız: {LTBLUE}{VELOCITY} {BLACK}Uçak türü: {LTBLUE}{STRING} {BLACK}Menzil: {LTBLUE}{COMMA} kare STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Ağırlık: {LTBLUE}{WEIGHT_SHORT} {BLACK}Güç: {LTBLUE}{POWER}{BLACK} Azami Hız: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Ağırlık: {LTBLUE}{WEIGHT_SHORT} {BLACK}Güç: {LTBLUE}{POWER}{BLACK} Azami Hız: {LTBLUE}{VELOCITY} {BLACK}Azami Tork: {LTBLUE}{FORCE} diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 5263a58313..13f7161df7 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -12,7 +12,7 @@ ##case r d z -# $Id: ukrainian.txt 27865 2017-05-03 20:43:22Z frosch $ +# $Id: ukrainian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2818,7 +2818,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ця ділян STR_ABOUT_OPENTTD :{WHITE}Про OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторське право {COPYRIGHT} 1995 Кріс Сойєр, Всі права захищені STR_ABOUT_VERSION :{BLACK}OpenTTD версія {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 команда OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 команда OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Зберегти гру @@ -3243,8 +3243,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Прий STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Показати список приймання вантажів STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Приймає: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ця станція має ексклюзивні права на перевезення. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} отримала ексклюзивні права на перевезення. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Ця станція має ексклюзивні права на перевезення. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} отримала ексклюзивні права на перевезення. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейтинг STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Показати рейтинг станції @@ -3491,6 +3491,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Позбути STR_GROUP_RENAME_CAPTION :{BLACK}Перейменувати групу + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Новий неелектрифікований поїзд STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Новий електрифікований поїзд @@ -3655,10 +3656,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :магнітн STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Ціна: {CURRENCY_LONG} Вага: {WEIGHT_SHORT}{}Швидкість: {VELOCITY}{}Потужність: {POWER}{}Вартість експлуатації: {CURRENCY_LONG}/рік{}Місткість: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Вартість: {CURRENCY_LONG} Вага: {WEIGHT_SHORT}{}Швидкість: {VELOCITY} Потужність: {POWER} Макс. тяга: {6:FORCE}{}Вартість експлуатації: {4:CURRENCY_LONG}/рік{}Місткість: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Місткість: {CARGO_LONG}, {CARGO_LONG}{}Вартість експлуатації: {CURRENCY_LONG}/рік -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Місткість: {CARGO_LONG}{}Вартість експлуатації: {CURRENCY_LONG}/рік -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Ціна: {CURRENCY_LONG} Макс. швидкість: {VELOCITY} Дальність: {COMMA} клітинок{}Місткість: {CARGO_LONG}, {CARGO_LONG}{}Вартість експлуатації: {CURRENCY_LONG}/рік -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY} Дальність: {COMMA} клітинок{}Місткість: {CARGO_LONG}{}Витрати від експлуатації: {CURRENCY_LONG}/рік +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Місткість: {CARGO_LONG}{}Вартість експлуатації: {CURRENCY_LONG}/рік # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Оновити {STRING} - {STRING} @@ -3780,7 +3778,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} р{P і STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} р{P ік оки оків} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Дальність: {LTBLUE}{COMMA} клітинок STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Макс. тяга: {LTBLUE}{FORCE} diff --git a/src/lang/unfinished/chuvash.txt b/src/lang/unfinished/chuvash.txt index 05438c34f2..c853324d62 100644 --- a/src/lang/unfinished/chuvash.txt +++ b/src/lang/unfinished/chuvash.txt @@ -10,7 +10,7 @@ ##grflangid 0x0b -# $Id: chuvash.txt 27753 2017-02-26 18:45:43Z translators $ +# $Id: chuvash.txt 27824 2017-03-24 18:45:45Z 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. @@ -1133,6 +1133,7 @@ STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ҫу + # Build vehicle window diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt index 496bebd52b..86a4a7fa21 100644 --- a/src/lang/unfinished/frisian.txt +++ b/src/lang/unfinished/frisian.txt @@ -10,7 +10,7 @@ ##grflangid 0x32 -# $Id: frisian.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: frisian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2475,7 +2475,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Lân fan bedriu STR_ABOUT_OPENTTD :{WHITE}Oer OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Orizjineel copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD-ferzje {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 It OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 It OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spul Opslaan @@ -2877,8 +2877,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK} STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Akseptearre fracht sjen litte STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aksepteart: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Dit stasjon hat eksklusyfe transportrjochten in dizze plak. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} Hat eksklusyfe transportrjochten in dizze plak kocht. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Dit stasjon hat eksklusyfe transportrjochten in dizze plak. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} Hat eksklusyfe transportrjochten in dizze plak kocht. STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Stasjonwurdearing sjen litte STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Moanlikse foarried en wurdearring: @@ -3097,6 +3097,7 @@ STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Ferwider STR_GROUP_REMOVE_ALL_VEHICLES :Alle fiertugen weihelje + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nije spoar weinen STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nije elektryske treinen @@ -3220,8 +3221,7 @@ STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monorail lokomo STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglevlokomotyf STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Kosten: {CURRENCY_LONG} Gewicht: {WEIGHT_SHORT}{}Snelheid: {VELOCITY} Kracht: {POWER}{}Underhâldskosten: {CURRENCY_LONG}/jr{}Kapasiteit: {CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Maks. Faasje: {VELOCITY}{}Kapasiteit: {CARGO_LONG}{}Underhâldskosten: {CURRENCY_LONG}/jr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Maks. Faasje: {VELOCITY} Bereik: {COMMA} tegels{}Kapasiteit: {CARGO_LONG}{}Underhâldskosten: {CURRENCY_LONG}/jr +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Kosten: {CURRENCY_LONG} Maks. Faasje: {VELOCITY}{}Kapasiteit: {CARGO_LONG}{}Underhâldskosten: {CURRENCY_LONG}/jr # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Ferfang {STRING} - {STRING} diff --git a/src/lang/unfinished/ido.txt b/src/lang/unfinished/ido.txt index 2156610cf3..f273a74320 100644 --- a/src/lang/unfinished/ido.txt +++ b/src/lang/unfinished/ido.txt @@ -10,7 +10,7 @@ ##grflangid 0x06 -# $Id: ido.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: ido.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -776,7 +776,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Stabeyo di komp # About OpenTTD window STR_ABOUT_VERSION :{BLACK}OpenTTD versiono {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 La kruo OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 La kruo OpenTTD # Save/load game/scenario STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludo Detali @@ -967,6 +967,7 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Negrupigita aer + # Build vehicle window diff --git a/src/lang/unfinished/macedonian.txt b/src/lang/unfinished/macedonian.txt index efaa6dce31..0737c38877 100644 --- a/src/lang/unfinished/macedonian.txt +++ b/src/lang/unfinished/macedonian.txt @@ -10,7 +10,7 @@ ##grflangid 0x26 -# $Id: macedonian.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: macedonian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1202,7 +1202,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Компани STR_ABOUT_OPENTTD :{WHITE}За OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинален copyright {COPYRIGHT} 1995 Chris Sawyer, Сите права се задржани STR_ABOUT_VERSION :{BLACK}OpenTTD верзија {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD тимот +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD тимот # Save/load game/scenario STR_SAVELOAD_LOAD_BUTTON :{BLACK}Оптоварување @@ -1448,6 +1448,7 @@ STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Испрати + # Build vehicle window STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Шински возила @@ -1501,8 +1502,6 @@ STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Цент # Engine preview window -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Цена: {CURRENCY_LONG} Макс. брзина: {VELOCITY} Опсег: {COMMA} плочки{}Капацитет: {CARGO_LONG}, {CARGO_LONG}{}Вклучување Цена: {CURRENCY_LONG}/год -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Цена: {CURRENCY_LONG} Макс. брзина: {VELOCITY} Опсег: {COMMA}плочки{}капацитет: {CARGO_LONG}{}Вклучување Цена: {CURRENCY_LONG}/год # Autoreplace window STR_REPLACE_VEHICLE_TRAIN :Воз @@ -1549,7 +1548,6 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}Име STR_VEHICLE_INFO_AGE :{COMMA} година{P "" s} ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} година{P "" s} ({COMMA}) -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Макс. брзина: {LTBLUE}{VELOCITY} {BLACK}Опсег: {LTBLUE}{COMMA} плочки diff --git a/src/lang/unfinished/maltese.txt b/src/lang/unfinished/maltese.txt index b5f1d3f03f..a7fa1dd02e 100644 --- a/src/lang/unfinished/maltese.txt +++ b/src/lang/unfinished/maltese.txt @@ -10,7 +10,7 @@ ##grflangid 0x09 -# $Id: maltese.txt 27753 2017-02-26 18:45:43Z translators $ +# $Id: maltese.txt 27824 2017-03-24 18:45:45Z 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. @@ -839,6 +839,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN + # Build vehicle window diff --git a/src/lang/unfinished/marathi.txt b/src/lang/unfinished/marathi.txt index c9b772effb..0a8fbd9665 100644 --- a/src/lang/unfinished/marathi.txt +++ b/src/lang/unfinished/marathi.txt @@ -10,7 +10,7 @@ ##grflangid 0x11 -# $Id: marathi.txt 27753 2017-02-26 18:45:43Z translators $ +# $Id: marathi.txt 27824 2017-03-24 18:45:45Z 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. @@ -1310,6 +1310,7 @@ STR_GROUP_ALL_AIRCRAFTS :सर्व STR_GROUP_REMOVE_ALL_VEHICLES :सगळे वाहने काढा + # Build vehicle window STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :नवीन रस्त्यावरचे वाहन diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt index ce4cfaa51c..2dbed20b00 100644 --- a/src/lang/unfinished/persian.txt +++ b/src/lang/unfinished/persian.txt @@ -10,7 +10,7 @@ ##grflangid 0x62 -# $Id: persian.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: persian.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2389,7 +2389,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :زمین خری STR_ABOUT_OPENTTD :{WHITE}OpenTTD در باره ی STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD ویرایش {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ذخیره ی بازی @@ -2951,6 +2951,7 @@ STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :فرستادن + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :قطار جدید STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :قطار جدید مونوریل @@ -3054,8 +3055,6 @@ STR_ENGINE_PREVIEW_SHIP :کشتی STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :لوکوموتیو مونوریل STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :لوکوموتیو ریل مغناطیسی -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}قیمت: {CURRENCY_LONG} بیشینه سرعت: {VELOCITY} برد: {COMMA} قطعه{}ظرفیت: {CARGO_LONG}, {CARGO_LONG}{}هزینه نگهداری: {CURRENCY_LONG}/درسال -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}قیمت: {CURRENCY_LONG} بیشینه سرعت: {VELOCITY} برد: {COMMA} قطعه{}ظرفیت: {CARGO_LONG}{}هزینه نگهداری: {CURRENCY_LONG}/درسال # Autoreplace window STR_REPLACE_VEHICLE_TRAIN :قطار @@ -3128,7 +3127,6 @@ STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}نامگ STR_VEHICLE_INFO_AGE :{COMMA}سال ({COMMA}) STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} سال ({COMMA}) -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}بیشینه سرعت: {LTBLUE}{VELOCITY} {BLACK}برد: {LTBLUE}{COMMA} قطعه STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}ظرفیت: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} diff --git a/src/lang/unfinished/urdu.txt b/src/lang/unfinished/urdu.txt index 58957d06e1..b77669dd4b 100644 --- a/src/lang/unfinished/urdu.txt +++ b/src/lang/unfinished/urdu.txt @@ -11,7 +11,7 @@ ##gender m f -# $Id: urdu.txt 27753 2017-02-26 18:45:43Z translators $ +# $Id: urdu.txt 27824 2017-03-24 18:45:45Z 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. @@ -2349,6 +2349,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}گروپ + # Build vehicle window STR_BUY_VEHICLE_AIRCRAFT_CAPTION :نیا طیارہ @@ -2405,8 +2406,6 @@ STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} # Engine preview window -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}قیمت: {CURRENCY_LONG} حد رفتار: {VELOCITY} پہنچ: {COMMA} ٹائلیں{} گنجائش: {CARGO_LONG}, {CARGO_LONG}{}چلانے کا خرچہ: {CURRENCY_LONG} سالانہ -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}قیمت: {CURRENCY_LONG} حد رفتار: {VELOCITY} پہنچ: {COMMA} ٹائلیں{} گنجائش: {CARGO_LONG}{}چلانے کا خرچہ: {CURRENCY_LONG} سالانہ # Autoreplace window @@ -2447,7 +2446,6 @@ STR_VEHICLE_COMMAND_STARTED :{GREEN} شرو # The next two need to stay in this order -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}حد رفتار: {LTBLUE}{VELOCITY} {BLACK} پہنچ: {LTBLUE}{COMMA} ٹائلیں diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index aabe16c9ae..5813c06efa 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -10,7 +10,7 @@ ##grflangid 0x54 -# $Id: vietnamese.txt 27941 2017-12-11 19:50:30Z frosch $ +# $Id: vietnamese.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Tắt STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Cuộn chuột trái: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Cho phép cuộn bản đồ bằng cách kéo với nút trái chuột. Tùy chọn này sẽ hữu ích khi dùng màn hình cảm ứng +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Đóng cửa số khi click chuột phải: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Đóng cửa sổ bằng cách bấm chuột phải vào đó. Ngăn tooltip bằng cách bấm phải! STR_CONFIG_SETTING_AUTOSAVE :Tự động save: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Chọn chu kỳ giữa mỗi lần tự động save @@ -2689,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Đất công ty STR_ABOUT_OPENTTD :{WHITE}Về OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Nguyên tác bản quyền {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD phiên bản {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Nhóm OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Nhóm OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lưu Ván Chơi @@ -3114,8 +3116,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Chấp n STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Liệt kê hàng hoá được chấp nhận STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Chấp nhận: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Trạm này độc quyền vận tải tại thị trấn này. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} đã mua quyền vận tải độc quyền ở đô thị này. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Trạm này độc quyền vận tải tại thị trấn này. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} đã mua quyền vận tải độc quyền ở đô thị này. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Uy tín STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Hiện uy tín ga, bến, cảng @@ -3294,11 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Yêu c STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Yêu cầu: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends -STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Cần cung cấp -STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}đang chờ -STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} -STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Cần cung cấp: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} đang chờ{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Sản xuất: {YELLOW}{STRING}{STRING} @@ -3367,6 +3367,11 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Xoá tất cả STR_GROUP_RENAME_CAPTION :{BLACK}Đổi tên nhóm +STR_GROUP_PROFIT_THIS_YEAR :Lợi nhuận năm nay: +STR_GROUP_PROFIT_LAST_YEAR :Lợi nhuận năm trước: +STR_GROUP_OCCUPANCY :Hiện đang dùng: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Tàu Hỏa Mới STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Tàu Điện Mới @@ -3398,6 +3403,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Tất cả ki STR_PURCHASE_INFO_ALL_BUT :Tất cả trừ {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Lực kéo tối đa: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Tầm xa: {GOLD}{COMMA} ô +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Kiểu máy bay: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Danh sách tàu hỏa có thể chọn. Click vào tàu hỏa để xem thông tin. Ctrl+Click để ẩn/hiện loại được chọn STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Danh sách xe có thể chọn. Click vào xe để xem thông tin. Ctrl+Click để ẩn/hiện loại được chọn @@ -3531,10 +3537,11 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :đầu máy đ STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Giá thành: {CURRENCY_LONG} Tải trọng: {WEIGHT_SHORT}{}Tốc độ: {VELOCITY} Công suất: {POWER}{}Chi phí hoạt động: {CURRENCY_LONG}/năm{}Sức chứa: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Giá: {CURRENCY_LONG} Nặng: {WEIGHT_SHORT}{}Tốc độ: {VELOCITY} Công suất: {POWER} Max. T.E.: {6:FORCE}{}Giá vận hành: {4:CURRENCY_LONG}/yr{}Năng suất: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Giá thành: {CURRENCY_LONG} Tốc độ tối đa: {VELOCITY}{}Sức chứa: {CARGO_LONG}, {CARGO_LONG}{}Running Cost: {CURRENCY_LONG}/yr -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Giá thành: {CURRENCY_LONG} Tốc độ tối đa: {VELOCITY}{}Sức chứa: {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Gía: {CURRENCY_LONG} Tốc độ max: {VELOCITY} Tầm xa: {COMMA} ô{}Trọng tải: {CARGO_LONG}, {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Giá: {CURRENCY_LONG} Tốc độ max: {VELOCITY} Tầm xa: {COMMA} ô{}Trọng tải: {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Giá thành: {CURRENCY_LONG} Tốc độ tối đa: {VELOCITY}{}Sức chứa: {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Giá: {CURRENCY_LONG} Tốc độ tối đa: {VELOCITY}{}Kiểu máy bay: {STRING}{}Sức chứa: {CARGO_LONG}, {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}GIá: {CURRENCY_LONG} Tốc độ tối đa: {VELOCITY}{}Kiểu máy bay: {STRING}{}Sức chứa: {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Giá: {CURRENCY_LONG} Tốc độ tối đa: {VELOCITY}{}Kiểu máy bay: {STRING} Tầm xa: {COMMA} ô{}Sức chứa: {CARGO_LONG}, {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Giá: {CURRENCY_LONG} Tốc độ tối đa: {VELOCITY}{}Kiểu máy bay: {STRING} Tầm xa: {COMMA} ô{}Sức chứa: {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Thay thế {STRING} - {STRING} @@ -3657,7 +3664,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} năm ({ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} năm ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Tốc độ tối đa: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Tốc độ max: {LTBLUE}{VELOCITY} {BLACK} Tầm xa: {LTBLUE}{COMMA} ô +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Tốc độ tối đa: {LTBLUE}{VELOCITY} {BLACK}Kiểu máy bay: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Tốc độ tối đa: {LTBLUE}{VELOCITY} {BLACK}Kiểu máy bay: {LTBLUE}{STRING} {BLACK}Tầm bay: {LTBLUE}{COMMA} ô STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Tải trọng: {LTBLUE}{WEIGHT_SHORT} {BLACK}Công suất: {LTBLUE}{POWER}{BLACK} Tốc độ tối đa: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Tải trọng: {LTBLUE}{WEIGHT_SHORT} {BLACK}Công suất: {LTBLUE}{POWER}{BLACK} Tốc độ tối đa: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 1a7206162f..57b18e3bc8 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -10,7 +10,7 @@ ##grflangid 0x0f -# $Id: welsh.txt 27777 2017-03-11 16:49:51Z frosch $ +# $Id: welsh.txt 27980 2018-03-11 12:24:32Z frosch $ # 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. @@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tir cwmni STR_ABOUT_OPENTTD :{WHITE}Gwybodaeth am OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hawlfraint Wreiddiol {COPYRIGHT} 1995 Chris Sawyer, Holl cedwir pob hawl STR_ABOUT_VERSION :{BLACK}fersiwn OpenTTD {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 Y tîm OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Y tîm OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Cadw Gêm @@ -3113,8 +3113,8 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Derbyn STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Dangos rhestr o'r llwythi sy'n cael eu derbyn STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Derbyn: {WHITE}{CARGO_LIST} -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Mae gan yr orsaf hon hawliau cludo cyfyngol yn y dref hon. -STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Mae {YELLOW}{COMPANY}{BLACK} wedi prynnu hawliau cludo cyfyngol yn y dref hon. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Mae gan yr orsaf hon hawliau cludo cyfyngol yn y dref hon. +STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :Mae {YELLOW}{COMPANY}{BLACK} wedi prynnu hawliau cludo cyfyngol yn y dref hon. STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Perfformiad STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Dangos graddfeydd gorsaf @@ -3361,6 +3361,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Dileu pob cerby STR_GROUP_RENAME_CAPTION :{BLACK}Ailenwi grŵp + # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Cerbydau Rheilffordd Newydd STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Cerbydau Rheilffordd Trydan Newydd @@ -3525,10 +3526,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :trên maglef STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Côst: {CURRENCY_LONG} Pwysau: {WEIGHT_SHORT}{}Cyflymder: {VELOCITY} Pŵer: {POWER}{}Côst Rhedeg: {CURRENCY_LONG}/bl{}Gallu cludo: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cost: {CURRENCY_LONG} Pwysau: {WEIGHT_SHORT}{}Cyflymder: {VELOCITY} Pŵer: {POWER} Grym Uchaf: {6:FORCE}{}Cost Rhedeg: {4:CURRENCY_LONG}/bl{}Cynhwysedd: {5:CARGO_LONG} -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Cyflym. Uchaf: {VELOCITY}{}Cynhwysedd: {CARGO_LONG}, {CARGO_LONG}{}Côst Rhedeg: {CURRENCY_LONG}/bl -STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Cyflym. Uchaf: {VELOCITY}{}Cynhwysedd: {CARGO_LONG}{}Cost Rhedeg: {CURRENCY_LONG}/bl -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_CAPACITY_RUNCOST:{BLACK}Cost: {CURRENCY_LONG} Cyf. Uchaf: {VELOCITY} Pellter: {COMMA} teil{}Cynhwysedd: {CARGO_LONG}, {CARGO_LONG}{}Cost Rhedeg: {CURRENCY_LONG}/bl -STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Cyf. Uchaf: {VELOCITY} Pellter: {COMMA} teil{}Cynhwysedd: {CARGO_LONG}{}Cost Rhedeg: {CURRENCY_LONG}/bl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Cyflym. Uchaf: {VELOCITY}{}Cynhwysedd: {CARGO_LONG}{}Cost Rhedeg: {CURRENCY_LONG}/bl # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Disodli {STRING} - {STRING} @@ -3651,7 +3649,6 @@ STR_VEHICLE_INFO_AGE :{COMMA} blwyddy STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} blwyddyn ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}cyflymder uchaf: {LTBLUE}{VELOCITY} -STR_VEHICLE_INFO_MAX_SPEED_RANGE :{BLACK}Cyf. uchaf: {LTBLUE}{VELOCITY} {BLACK}Pell. Cyrraedd: {LTBLUE}{COMMA} teil STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Pwys: {LTBLUE}{WEIGHT_SHORT} {BLACK}Pŵer: {LTBLUE}{POWER}{BLACK} Cyflym. Max: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Pwys: {LTBLUE}{WEIGHT_SHORT} {BLACK}Pŵer: {LTBLUE}{POWER}{BLACK} Cyflym. Max: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE} diff --git a/src/linkgraph/linkgraph_gui.h b/src/linkgraph/linkgraph_gui.h index 44762c3149..5a254382e9 100644 --- a/src/linkgraph/linkgraph_gui.h +++ b/src/linkgraph/linkgraph_gui.h @@ -1,4 +1,4 @@ -/* $Id: linkgraph_gui.h 27612 2016-07-10 11:57:16Z fonsinchen $ */ +/* $Id: linkgraph_gui.h 27887 2017-07-11 19:34:21Z frosch $ */ /* * This file is part of OpenTTD. @@ -77,7 +77,6 @@ protected: Point GetStationMiddle(const Station *st) const; - void DrawForwBackLinks(Point pta, StationID sta, Point ptb, StationID stb) const; void AddLinks(const Station *sta, const Station *stb); void DrawLinks(const DrawPixelInfo *dpi) const; void DrawStationDots(const DrawPixelInfo *dpi) const; diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 285be81b95..c3c022ff6a 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: misc_gui.cpp 27781 2017-03-11 21:02:32Z frosch $ */ +/* $Id: misc_gui.cpp 27995 2018-03-21 19:34:17Z frosch $ */ /* * This file is part of OpenTTD. @@ -397,6 +397,7 @@ static const char * const _credits[] = { "Original graphics by Simon Foster", "", "The OpenTTD team (in alphabetical order):", + " Grzegorz Duczy\xC5\x84ski (adf88) - General coding (since 1.7.2)", " Albert Hofkamp (Alberth) - GUI expert (since 0.7)", " Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)", " Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)", @@ -440,7 +441,7 @@ static const char * const _credits[] = { " Mike Ragsdale - OpenTTD installer", " Christian Rosentreter (tokai) - MorphOS / AmigaOS port", " Richard Kempton (richK) - additional airports, initial TGP implementation", - " HvS - titlegame", + " Emperor Jake - titlegame", "", " Alberto Demichelis - Squirrel scripting language \xC2\xA9 2003-2008", " L. Peter Deutsch - MD5 implementation \xC2\xA9 1999, 2000, 2002", @@ -1008,10 +1009,12 @@ struct QueryStringWindow : public Window switch (widget) { case WID_QS_DEFAULT: this->editbox.text.DeleteAll(); - /* FALL THROUGH */ + FALLTHROUGH; + case WID_QS_OK: this->OnOk(); - /* FALL THROUGH */ + FALLTHROUGH; + case WID_QS_CANCEL: delete this; break; @@ -1161,7 +1164,8 @@ struct QueryWindow : public Window { this->proc(this->parent, true); this->proc = NULL; } - /* FALL THROUGH */ + FALLTHROUGH; + case WKC_ESC: delete this; return ES_HANDLED; diff --git a/src/music/extmidi.cpp b/src/music/extmidi.cpp index e83dc92559..84ccf4907e 100644 --- a/src/music/extmidi.cpp +++ b/src/music/extmidi.cpp @@ -1,4 +1,4 @@ -/* $Id: extmidi.cpp 26556 2014-05-03 20:21:01Z rubidium $ */ +/* $Id: extmidi.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -12,6 +12,7 @@ #include "../stdafx.h" #include "../debug.h" #include "../string_func.h" +#include "../core/alloc_func.hpp" #include "../sound/sound_driver.hpp" #include "../video/video_driver.hpp" #include "../gfx_func.h" @@ -42,9 +43,33 @@ const char *MusicDriver_ExtMidi::Start(const char * const * parm) } const char *command = GetDriverParam(parm, "cmd"); +#ifndef MIDI_ARG if (StrEmpty(command)) command = EXTERNAL_PLAYER; +#else + if (StrEmpty(command)) command = EXTERNAL_PLAYER " " MIDI_ARG; +#endif + + /* Count number of arguments, but include 3 extra slots: 1st for command, 2nd for song title, and 3rd for terminating NULL. */ + uint num_args = 3; + for (const char *t = command; *t != '\0'; t++) if (*t == ' ') num_args++; + + this->params = CallocT(num_args); + this->params[0] = stredup(command); + + /* Replace space with \0 and add next arg to params */ + uint p = 1; + while (true) { + this->params[p] = strchr(this->params[p - 1], ' '); + if (this->params[p] == NULL) break; + + this->params[p][0] = '\0'; + this->params[p]++; + p++; + } + + /* Last parameter is the song file. */ + this->params[p] = this->song; - this->command = stredup(command); this->song[0] = '\0'; this->pid = -1; return NULL; @@ -52,7 +77,8 @@ const char *MusicDriver_ExtMidi::Start(const char * const * parm) void MusicDriver_ExtMidi::Stop() { - free(command); + free(params[0]); + free(params); this->song[0] = '\0'; this->DoStop(); } @@ -91,18 +117,14 @@ void MusicDriver_ExtMidi::DoPlay() close(0); int d = open("/dev/null", O_RDONLY); if (d != -1 && dup2(d, 1) != -1 && dup2(d, 2) != -1) { - #if defined(MIDI_ARG) - execlp(this->command, "extmidi", MIDI_ARG, this->song, (char*)0); - #else - execlp(this->command, "extmidi", this->song, (char*)0); - #endif + execvp(this->params[0], this->params); } _exit(1); } case -1: DEBUG(driver, 0, "extmidi: couldn't fork: %s", strerror(errno)); - /* FALL THROUGH */ + FALLTHROUGH; default: this->song[0] = '\0'; diff --git a/src/music/extmidi.h b/src/music/extmidi.h index d986504be4..bc17adf970 100644 --- a/src/music/extmidi.h +++ b/src/music/extmidi.h @@ -1,4 +1,4 @@ -/* $Id: extmidi.h 26108 2013-11-25 14:30:22Z rubidium $ */ +/* $Id: extmidi.h 27834 2017-03-29 17:36:46Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -16,7 +16,7 @@ class MusicDriver_ExtMidi : public MusicDriver { private: - char *command; + char **params; char song[MAX_PATH]; pid_t pid; diff --git a/src/music/qtmidi.cpp b/src/music/qtmidi.cpp index 003cc05076..aac48e5191 100644 --- a/src/music/qtmidi.cpp +++ b/src/music/qtmidi.cpp @@ -1,4 +1,4 @@ -/* $Id: qtmidi.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: qtmidi.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -242,7 +242,7 @@ void MusicDriver_QtMidi::Stop() case QT_STATE_PLAY: StopSong(); - /* FALL THROUGH */ + FALLTHROUGH; case QT_STATE_STOP: DisposeMovie(_quicktime_movie); @@ -267,13 +267,13 @@ void MusicDriver_QtMidi::PlaySong(const char *filename) case QT_STATE_PLAY: StopSong(); DEBUG(driver, 3, "qtmidi: previous tune stopped"); - /* FALL THROUGH */ + FALLTHROUGH; case QT_STATE_STOP: DisposeMovie(_quicktime_movie); DEBUG(driver, 3, "qtmidi: previous tune disposed"); _quicktime_state = QT_STATE_IDLE; - /* FALL THROUGH */ + FALLTHROUGH; case QT_STATE_IDLE: LoadMovieForMIDIFile(filename, &_quicktime_movie); @@ -294,7 +294,7 @@ void MusicDriver_QtMidi::StopSong() switch (_quicktime_state) { case QT_STATE_IDLE: - /* FALL THROUGH */ + FALLTHROUGH; case QT_STATE_STOP: DEBUG(driver, 3, "qtmidi: stop requested, but already idle"); diff --git a/src/network/core/udp.cpp b/src/network/core/udp.cpp index 289f573b12..c06c2f1a51 100644 --- a/src/network/core/udp.cpp +++ b/src/network/core/udp.cpp @@ -1,4 +1,4 @@ -/* $Id: udp.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: udp.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -252,17 +252,20 @@ void NetworkUDPSocketHandler::ReceiveNetworkGameInfo(Packet *p, NetworkGameInfo *dst = c; dst = &c->next; } - /* FALL THROUGH */ } + FALLTHROUGH; + case 3: info->game_date = Clamp(p->Recv_uint32(), 0, MAX_DATE); info->start_date = Clamp(p->Recv_uint32(), 0, MAX_DATE); - /* FALL THROUGH */ + FALLTHROUGH; + case 2: info->companies_max = p->Recv_uint8 (); info->companies_on = p->Recv_uint8 (); info->spectators_max = p->Recv_uint8 (); - /* FALL THROUGH */ + FALLTHROUGH; + case 1: p->Recv_string(info->server_name, sizeof(info->server_name)); p->Recv_string(info->server_revision, sizeof(info->server_revision)); diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp index 3b9551b2d0..eba6d2c0c7 100644 --- a/src/network/network_chat_gui.cpp +++ b/src/network/network_chat_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: network_chat_gui.cpp 27863 2017-05-03 20:09:51Z frosch $ */ +/* $Id: network_chat_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -492,10 +492,13 @@ struct NetworkChatWindow : public Window { virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { - /* Send */ - case WID_NC_SENDBUTTON: SendChat(this->message_editbox.text.buf, this->dtype, this->dest); - /* FALL THROUGH */ - case WID_NC_CLOSE: /* Cancel */ delete this; break; + case WID_NC_SENDBUTTON: /* Send */ + SendChat(this->message_editbox.text.buf, this->dtype, this->dest); + FALLTHROUGH; + + case WID_NC_CLOSE: /* Cancel */ + delete this; + break; } } diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index a710475f75..05d38e85ab 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -1,4 +1,4 @@ -/* $Id: network_client.cpp 27653 2016-09-04 16:06:50Z alberth $ */ +/* $Id: network_client.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -965,7 +965,8 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p) /* For speaking to company or giving money, we need the company-name */ case NETWORK_ACTION_GIVE_MONEY: if (!Company::IsValidID(ci_to->client_playas)) return NETWORK_RECV_STATUS_OKAY; - /* FALL THROUGH */ + FALLTHROUGH; + case NETWORK_ACTION_CHAT_COMPANY: { StringID str = Company::IsValidID(ci_to->client_playas) ? STR_COMPANY_NAME : STR_NETWORK_SPECTATORS; SetDParam(0, ci_to->client_playas); diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp index 8ff2fe61be..3a098c537c 100644 --- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: network_content_gui.cpp 27469 2015-12-10 19:58:33Z zuu $ */ +/* $Id: network_content_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -908,7 +908,8 @@ public: } return ES_HANDLED; } - /* FALL THROUGH, space is pressed and filter is focused. */ + /* space is pressed and filter is focused. */ + FALLTHROUGH; default: return ES_NOT_HANDLED; diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 00a8ac72bb..e44977ca7a 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: network_gui.cpp 27653 2016-09-04 16:06:50Z alberth $ */ +/* $Id: network_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -2053,7 +2053,8 @@ struct NetworkJoinStatusWindow : Window { progress = 15; // We don't have the final size yet; the server is still compressing! break; } - /* FALL THROUGH */ + FALLTHROUGH; + default: // Waiting is 15%, so the resting receivement of map is maximum 70% progress = 15 + _network_join_bytes * (100 - 15) / _network_join_bytes_total; } @@ -2182,7 +2183,7 @@ struct NetworkCompanyPasswordWindow : public Window { switch (widget) { case WID_NCP_OK: this->OnOk(); - /* FALL THROUGH */ + FALLTHROUGH; case WID_NCP_CANCEL: delete this; diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 140d9254b8..e9acda2ba8 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -1,4 +1,4 @@ -/* $Id: network_server.cpp 26975 2014-10-07 17:32:29Z rubidium $ */ +/* $Id: network_server.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -1361,7 +1361,8 @@ void NetworkServerSendChat(NetworkAction action, DestType desttype, int dest, co } default: DEBUG(net, 0, "[server] received unknown chat destination type %d. Doing broadcast instead", desttype); - /* FALL THROUGH */ + FALLTHROUGH; + case DESTTYPE_BROADCAST: FOR_ALL_CLIENT_SOCKETS(cs) { cs->SendChat(action, from_id, false, msg, data); @@ -1396,7 +1397,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_CHAT(Packet *p) switch (action) { case NETWORK_ACTION_GIVE_MONEY: if (!Company::IsValidID(ci->client_playas)) break; - /* FALL THROUGH */ + FALLTHROUGH; case NETWORK_ACTION_CHAT: case NETWORK_ACTION_CHAT_CLIENT: case NETWORK_ACTION_CHAT_COMPANY: diff --git a/src/newgrf.cpp b/src/newgrf.cpp index e9c7bc7b2d..03a60b09bd 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf.cpp 27769 2017-03-05 14:45:13Z frosch $ */ +/* $Id: newgrf.cpp 27989 2018-03-11 15:08:51Z frosch $ */ /* * This file is part of OpenTTD. @@ -12,6 +12,7 @@ #include "stdafx.h" #include +#include #include "debug.h" #include "fileio_func.h" @@ -2969,7 +2970,7 @@ static ChangeInfoResult CargoChangeInfo(uint cid, int numinfo, int prop, ByteRea case 0x0B: cs->town_effect = TE_FOOD; break; default: grfmsg(1, "CargoChangeInfo: Unknown town growth substitute value %d, setting to none.", substitute_type); - /* FALL THROUGH */ + FALLTHROUGH; case 0xFF: cs->town_effect = TE_NONE; break; } break; @@ -3672,6 +3673,9 @@ static void DuplicateTileTable(AirportSpec *as) HangarTileTable *depot_table = MallocT(as->nof_depots); MemCpyT(depot_table, as->depot_table, as->nof_depots); as->depot_table = depot_table; + Direction *rotation = MallocT(as->num_table); + MemCpyT(rotation, as->rotation, as->num_table); + as->rotation = rotation; } /** @@ -3741,6 +3745,7 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B } case 0x0A: { // Set airport layout + free(as->rotation); as->num_table = buf->ReadByte(); // Number of layaouts as->rotation = MallocT(as->num_table); uint32 defsize = buf->ReadDWord(); // Total size of the definition @@ -3750,7 +3755,7 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B const AirportTileTable *copy_from; try { for (byte j = 0; j < as->num_table; j++) { - as->rotation[j] = (Direction)buf->ReadByte(); + const_cast(as->rotation[j]) = (Direction)buf->ReadByte(); for (int k = 0;; k++) { att[k].ti.x = buf->ReadByte(); // Offsets from northermost tile att[k].ti.y = buf->ReadByte(); @@ -4094,7 +4099,7 @@ static ChangeInfoResult RailTypeChangeInfo(uint id, int numinfo, int prop, ByteR RailType rt = GetRailTypeByLabel(BSWAP32(label), false); if (rt != INVALID_RAILTYPE) { switch (prop) { - case 0x0F: SetBit(rti->powered_railtypes, rt); // Powered implies compatible. + case 0x0F: SetBit(rti->powered_railtypes, rt); FALLTHROUGH; // Powered implies compatible. case 0x0E: SetBit(rti->compatible_railtypes, rt); break; case 0x18: SetBit(rti->introduction_required_railtypes, rt); break; case 0x19: SetBit(rti->introduces_railtypes, rt); break; @@ -4211,7 +4216,7 @@ static ChangeInfoResult RailTypeReserveInfo(uint id, int numinfo, int prop, Byte break; } grfmsg(1, "RailTypeReserveInfo: Ignoring property 1D for rail type %u because no label was set", id + i); - /* FALL THROUGH */ + FALLTHROUGH; case 0x0E: // Compatible railtype list case 0x0F: // Powered railtype list @@ -4350,7 +4355,7 @@ static bool HandleChangeInfoResult(const char *caller, ChangeInfoResult cir, uin case CIR_UNKNOWN: grfmsg(0, "%s: Unknown property 0x%02X of feature 0x%02X, disabling", caller, property, feature); - /* FALL THROUGH */ + FALLTHROUGH; case CIR_INVALID_ID: { /* No debug message for an invalid ID, as it has already been output */ @@ -4683,16 +4688,63 @@ static void NewSpriteGroup(ByteReader *buf) group->adjusts = MallocT(group->num_adjusts); MemCpyT(group->adjusts, adjusts.Begin(), group->num_adjusts); - group->num_ranges = buf->ReadByte(); - if (group->num_ranges > 0) group->ranges = CallocT(group->num_ranges); - - for (uint i = 0; i < group->num_ranges; i++) { - group->ranges[i].group = GetGroupFromGroupID(setid, type, buf->ReadWord()); - group->ranges[i].low = buf->ReadVarSize(varsize); - group->ranges[i].high = buf->ReadVarSize(varsize); + std::vector ranges; + ranges.resize(buf->ReadByte()); + for (uint i = 0; i < ranges.size(); i++) { + ranges[i].group = GetGroupFromGroupID(setid, type, buf->ReadWord()); + ranges[i].low = buf->ReadVarSize(varsize); + ranges[i].high = buf->ReadVarSize(varsize); } group->default_group = GetGroupFromGroupID(setid, type, buf->ReadWord()); + group->error_group = ranges.size() > 0 ? ranges[0].group : group->default_group; + /* nvar == 0 is a special case -- we turn our value into a callback result */ + group->calculated_result = ranges.size() == 0; + + /* Sort ranges ascending. When ranges overlap, this may required clamping or splitting them */ + std::vector bounds; + for (uint i = 0; i < ranges.size(); i++) { + bounds.push_back(ranges[i].low); + if (ranges[i].high != UINT32_MAX) bounds.push_back(ranges[i].high + 1); + } + std::sort(bounds.begin(), bounds.end()); + bounds.erase(std::unique(bounds.begin(), bounds.end()), bounds.end()); + + std::vector target; + for (uint j = 0; j < bounds.size(); ++j) { + uint32 v = bounds[j]; + const SpriteGroup *t = group->default_group; + for (uint i = 0; i < ranges.size(); i++) { + if (ranges[i].low <= v && v <= ranges[i].high) { + t = ranges[i].group; + break; + } + } + target.push_back(t); + } + assert(target.size() == bounds.size()); + + std::vector optimised; + for (uint j = 0; j < bounds.size(); ) { + if (target[j] != group->default_group) { + DeterministicSpriteGroupRange r; + r.group = target[j]; + r.low = bounds[j]; + while (j < bounds.size() && target[j] == r.group) { + j++; + } + r.high = j < bounds.size() ? bounds[j] - 1 : UINT32_MAX; + optimised.push_back(r); + } else { + j++; + } + } + + group->num_ranges = optimised.size(); + if (group->num_ranges > 0) { + group->ranges = MallocT(group->num_ranges); + MemCpyT(group->ranges, &optimised.front(), group->num_ranges); + } break; } @@ -7915,6 +7967,7 @@ static void ResetCustomAirports() } free(as->table); free(as->depot_table); + free(as->rotation); free(as); } diff --git a/src/newgrf_airport.cpp b/src/newgrf_airport.cpp index ed661e2077..fd8c5a0c2a 100644 --- a/src/newgrf_airport.cpp +++ b/src/newgrf_airport.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_airport.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: newgrf_airport.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -26,7 +26,18 @@ struct AirportScopeResolver : public ScopeResolver { byte layout; ///< Layout of the airport to build. TileIndex tile; ///< Tile for the callback, only valid for airporttile callbacks. - AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout); + /** + * Constructor of the scope resolver for an airport. + * @param ro Surrounding resolver. + * @param tile %Tile for the callback, only valid for airporttile callbacks. + * @param st %Station of the airport for which the callback is run, or \c NULL for build gui. + * @param airport_id Type of airport for which the callback is run. + * @param layout Layout of the airport to build. + */ + AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout) + : ScopeResolver(ro), st(st), airport_id(airport_id), layout(layout), tile(tile) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -242,22 +253,6 @@ AirportResolverObject::AirportResolverObject(TileIndex tile, Station *st, byte a this->root_spritegroup = AirportSpec::Get(airport_id)->grf_prop.spritegroup[0]; } -/** - * Constructor of the scope resolver for an airport. - * @param ro Surrounding resolver. - * @param tile %Tile for the callback, only valid for airporttile callbacks. - * @param st %Station of the airport for which the callback is run, or \c NULL for build gui. - * @param airport_id Type of airport for which the callback is run. - * @param layout Layout of the airport to build. - */ -AirportScopeResolver::AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout) : ScopeResolver(ro) -{ - this->st = st; - this->airport_id = airport_id; - this->layout = layout; - this->tile = tile; -} - SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout) { AirportResolverObject object(INVALID_TILE, NULL, as->GetIndex(), layout); diff --git a/src/newgrf_airport.h b/src/newgrf_airport.h index e2ca18ce60..e4d3755ef4 100644 --- a/src/newgrf_airport.h +++ b/src/newgrf_airport.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_airport.h 25705 2013-08-09 18:43:44Z rubidium $ */ +/* $Id: newgrf_airport.h 27908 2017-08-31 06:55:38Z adf88 $ */ /* * This file is part of OpenTTD. @@ -100,7 +100,7 @@ struct HangarTileTable { struct AirportSpec { const struct AirportFTAClass *fsm; ///< the finite statemachine for the default airports const AirportTileTable * const *table; ///< list of the tiles composing the airport - Direction *rotation; ///< the rotation of each tiletable + const Direction *rotation; ///< the rotation of each tiletable byte num_table; ///< number of elements in the table const HangarTileTable *depot_table; ///< gives the position of the depots on the airports byte nof_depots; ///< the number of hangar tiles in this airport @@ -133,7 +133,7 @@ struct AirportSpec { return (byte)(this - specs); } - static AirportSpec dummy; ///< The dummy airport. + static const AirportSpec dummy; ///< The dummy airport. private: static AirportSpec specs[NUM_AIRPORTS]; ///< Specs of the airports. diff --git a/src/newgrf_airporttiles.cpp b/src/newgrf_airporttiles.cpp index 4880b044ee..d248921354 100644 --- a/src/newgrf_airporttiles.cpp +++ b/src/newgrf_airporttiles.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_airporttiles.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: newgrf_airporttiles.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -222,21 +222,6 @@ AirportTileResolverObject::AirportTileResolverObject(const AirportTileSpec *ats, this->root_spritegroup = ats->grf_prop.spritegroup[0]; } -/** - * Constructor of the scope resolver specific for airport tiles. - * @param ats Specification of the airport tiles. - * @param tile %Tile for the callback, only valid for airporttile callbacks. - * @param st Station of the airport for which the callback is run, or \c NULL for build gui. - */ -AirportTileScopeResolver::AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st) : ScopeResolver(ro) -{ - assert(st != NULL); - - this->st = st; - this->airport_id = st->airport.type; - this->tile = tile; -} - uint16 GetAirportTileCallback(CallbackID callback, uint32 param1, uint32 param2, const AirportTileSpec *ats, Station *st, TileIndex tile, int extra_data = 0) { AirportTileResolverObject object(ats, tile, st, callback, param1, param2); diff --git a/src/newgrf_airporttiles.h b/src/newgrf_airporttiles.h index 3d6639eeb5..dbfbc70501 100644 --- a/src/newgrf_airporttiles.h +++ b/src/newgrf_airporttiles.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_airporttiles.h 26085 2013-11-24 14:41:19Z frosch $ */ +/* $Id: newgrf_airporttiles.h 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -17,6 +17,7 @@ #include "newgrf_animation_type.h" #include "newgrf_commons.h" #include "newgrf_spritegroup.h" +#include "station_base.h" /** Scope resolver for handling the tiles of an airport. */ struct AirportTileScopeResolver : public ScopeResolver { @@ -24,7 +25,18 @@ struct AirportTileScopeResolver : public ScopeResolver { byte airport_id; ///< Type of airport for which the callback is run. TileIndex tile; ///< Tile for the callback, only valid for airporttile callbacks. - AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st); + /** + * Constructor of the scope resolver specific for airport tiles. + * @param ats Specification of the airport tiles. + * @param tile %Tile for the callback, only valid for airporttile callbacks. + * @param st Station of the airport for which the callback is run, or \c NULL for build gui. + */ + AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st) + : ScopeResolver(ro), st(st), tile(tile) + { + assert(st != NULL); + this->airport_id = st->airport.type; + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_canal.cpp b/src/newgrf_canal.cpp index 708bd9647b..737dd29f49 100644 --- a/src/newgrf_canal.cpp +++ b/src/newgrf_canal.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_canal.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: newgrf_canal.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -25,7 +25,10 @@ WaterFeature _water_feature[CF_END]; struct CanalScopeResolver : public ScopeResolver { TileIndex tile; ///< Tile containing the canal. - CanalScopeResolver(ResolverObject &ro, TileIndex tile); + CanalScopeResolver(ResolverObject &ro, TileIndex tile) + : ScopeResolver(ro), tile(tile) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -110,11 +113,6 @@ struct CanalResolverObject : public ResolverObject { return group->loaded[0]; } -CanalScopeResolver::CanalScopeResolver(ResolverObject &ro, TileIndex tile) : ScopeResolver(ro) -{ - this->tile = tile; -} - /** * Canal resolver constructor. * @param feature Which canal feature we want. diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index 91fcf77275..7a839e933d 100644 --- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_engine.cpp 27668 2016-10-16 14:59:44Z frosch $ */ +/* $Id: newgrf_engine.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -347,21 +347,6 @@ static byte MapAircraftMovementAction(const Aircraft *v) return this->v == NULL ? 0 : this->v->waiting_triggers; } -/* virtual */ void VehicleScopeResolver::SetTriggers(int triggers) const -{ - /* Evil cast to get around const-ness. This used to be achieved by an - * innocent looking function pointer cast... Currently I cannot see a - * way of avoiding this without removing consts deep within gui code. - */ - Vehicle *v = const_cast(this->v); - - /* This function must only be called when processing triggers -- any - * other time is an error. */ - assert(this->ro.trigger != 0); - - if (v != NULL) v->waiting_triggers = triggers; -} - /* virtual */ ScopeResolver *VehicleResolverObject::GetScope(VarSpriteGroupScope scope, byte relative) { @@ -952,21 +937,6 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, return in_motion ? group->loaded[set] : group->loading[set]; } -/** - * Scope resolver of a single vehicle. - * @param ro Surrounding resolver. - * @param engine_type Engine type - * @param v %Vehicle being resolved. - * @param info_view Indicates if the item is being drawn in an info window. - */ -VehicleScopeResolver::VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view) - : ScopeResolver(ro) -{ - this->v = v; - this->self_type = engine_type; - this->info_view = info_view; -} - /** * Get the grf file associated with an engine type. * @param engine_type Engine to query. @@ -1140,13 +1110,18 @@ static void DoTriggerVehicle(Vehicle *v, VehicleTrigger trigger, byte base_rando assert(v != NULL); VehicleResolverObject object(v->engine_type, v, VehicleResolverObject::WO_CACHED, false, CBID_RANDOM_TRIGGER); - object.trigger = trigger; + object.waiting_triggers = v->waiting_triggers | trigger; + v->waiting_triggers = object.waiting_triggers; // store now for var 5F const SpriteGroup *group = object.Resolve(); if (group == NULL) return; + /* Store remaining triggers. */ + v->waiting_triggers = object.GetRemainingTriggers(); + + /* Rerandomise bits. Scopes other than SELF are invalid for rerandomisation. For bug-to-bug-compatibility with TTDP we ignore the scope. */ byte new_random_bits = Random(); - uint32 reseed = object.GetReseedSum(); // The scope only affects triggers, not the reseeding + uint32 reseed = object.GetReseedSum(); v->random_bits &= ~reseed; v->random_bits |= (first ? new_random_bits : base_random_bits) & reseed; diff --git a/src/newgrf_engine.h b/src/newgrf_engine.h index f8342d4646..752af28789 100644 --- a/src/newgrf_engine.h +++ b/src/newgrf_engine.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_engine.h 27666 2016-10-16 14:57:56Z frosch $ */ +/* $Id: newgrf_engine.h 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -26,14 +26,23 @@ struct VehicleScopeResolver : public ScopeResolver { EngineID self_type; ///< Type of the vehicle. bool info_view; ///< Indicates if the item is being drawn in an info window. - VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view); + /** + * Scope resolver of a single vehicle. + * @param ro Surrounding resolver. + * @param engine_type Engine type + * @param v %Vehicle being resolved. + * @param info_view Indicates if the item is being drawn in an info window. + */ + VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view) + : ScopeResolver(ro), v(v), self_type(engine_type), info_view(info_view) + { + } void SetVehicle(const Vehicle *v) { this->v = v; } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; /* virtual */ uint32 GetTriggers() const; - /* virtual */ void SetTriggers(int triggers) const; }; /** Resolver for a vehicle (chain) */ diff --git a/src/newgrf_generic.cpp b/src/newgrf_generic.cpp index bdc7f85ce2..879ba7202a 100644 --- a/src/newgrf_generic.cpp +++ b/src/newgrf_generic.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_generic.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: newgrf_generic.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -31,7 +31,16 @@ struct GenericScopeResolver : public ScopeResolver { uint8 count; uint8 station_size; - GenericScopeResolver(ResolverObject &ro, bool ai_callback); + /** + * Generic scope resolver. + * @param ro Surrounding resolver. + * @param ai_callback Callback comes from the AI. + */ + GenericScopeResolver(ResolverObject &ro, bool ai_callback) + : ScopeResolver(ro), cargo_type(0), default_selection(0), src_industry(0), dst_industry(0), distance(0), + event(), count(0), station_size(0), ai_callback(ai_callback) + { + } /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -145,24 +154,6 @@ GenericResolverObject::GenericResolverObject(bool ai_callback, CallbackID callba { } -/** - * Generic scope resolver. - * @param ro Surrounding resolver. - * @param ai_callback Callback comes from the AI. - */ -GenericScopeResolver::GenericScopeResolver(ResolverObject &ro, bool ai_callback) : ScopeResolver(ro) -{ - this->cargo_type = 0; - this->default_selection = 0; - this->src_industry = 0; - this->dst_industry = 0; - this->distance = 0; - this->event = (AIConstructionEvent)0; - this->count = 0; - this->station_size = 0; - this->ai_callback = ai_callback; -} - /** * Follow a generic feature callback list and return the first successful diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index e4cf835ace..eabe853988 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_gui.cpp 27729 2017-01-14 13:12:49Z frosch $ */ +/* $Id: newgrf_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -1032,8 +1032,9 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { if (this->editable && this->active_sel != NULL) SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); break; } - /* FALL THROUGH, with double click. */ + /* With double click, continue */ } + FALLTHROUGH; case WID_NS_REMOVE: { // Remove GRF if (this->active_sel == NULL || !this->editable) break; @@ -1087,8 +1088,9 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { if (this->editable && this->avail_sel != NULL && !HasBit(this->avail_sel->flags, GCF_INVALID)) SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); break; } - /* FALL THROUGH, with double click. */ + /* With double click, continue */ } + FALLTHROUGH; case WID_NS_ADD: if (this->avail_sel == NULL || !this->editable || HasBit(this->avail_sel->flags, GCF_INVALID)) break; @@ -1225,10 +1227,12 @@ struct NewGRFWindow : public Window, NewGRFScanCallback { } this->avails.ForceRebuild(); - /* FALL THROUGH */ + FALLTHROUGH; + case GOID_NEWGRF_LIST_EDITED: this->preset = -1; - /* FALL THROUGH */ + FALLTHROUGH; + case GOID_NEWGRF_PRESET_LOADED: { /* Update scrollbars */ int i = 0; diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp index 73e95ff557..f57068e950 100644 --- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_house.cpp 27574 2016-05-22 10:23:22Z frosch $ */ +/* $Id: newgrf_house.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -31,28 +31,6 @@ static HouseClassMapping _class_mapping[HOUSE_CLASS_MAX]; HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, NUM_HOUSES, INVALID_HOUSE_ID); -/** - * Constructor of a house scope resolver. - * @param ro Surrounding resolver. - * @param house_id House type being queried. - * @param tile %Tile containing the house. - * @param town %Town containing the house. - * @param not_yet_constructed House is still under construction. - * @param initial_random_bits Random bits during construction checks. - * @param watched_cargo_triggers Cargo types that triggered the watched cargo callback. - */ -HouseScopeResolver::HouseScopeResolver(ResolverObject &ro, HouseID house_id, TileIndex tile, Town *town, - bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers) - : ScopeResolver(ro) -{ - this->house_id = house_id; - this->tile = tile; - this->town = town; - this->not_yet_constructed = not_yet_constructed; - this->initial_random_bits = initial_random_bits; - this->watched_cargo_triggers = watched_cargo_triggers; -} - /** * Retrieve the grf file associated with a house. * @param house_id House to query. @@ -169,12 +147,6 @@ void DecreaseBuildingCount(Town *t, HouseID house_id) return this->not_yet_constructed ? 0 : GetHouseTriggers(this->tile); } -/* virtual */ void HouseScopeResolver::SetTriggers(int triggers) const -{ - assert(!this->not_yet_constructed && IsValidTile(this->tile) && IsTileType(this->tile, MP_HOUSE)); - SetHouseTriggers(this->tile, triggers); -} - static uint32 GetNumHouses(HouseID house_id, const Town *town) { uint8 map_id_count, town_id_count, map_class_count, town_class_count; @@ -613,14 +585,19 @@ static void DoTriggerHouse(TileIndex tile, HouseTrigger trigger, byte base_rando if (hs->grf_prop.spritegroup[0] == NULL) return; HouseResolverObject object(hid, tile, Town::GetByTile(tile), CBID_RANDOM_TRIGGER); - object.trigger = trigger; + object.waiting_triggers = GetHouseTriggers(tile) | trigger; + SetHouseTriggers(tile, object.waiting_triggers); // store now for var 5F const SpriteGroup *group = object.Resolve(); if (group == NULL) return; + /* Store remaining triggers. */ + SetHouseTriggers(tile, object.GetRemainingTriggers()); + + /* Rerandomise bits. Scopes other than SELF are invalid for houses. For bug-to-bug-compatibility with TTDP we ignore the scope. */ byte new_random_bits = Random(); byte random_bits = GetHouseRandomBits(tile); - uint32 reseed = object.GetReseedSum(); // The scope only affects triggers, not the reseeding + uint32 reseed = object.GetReseedSum(); random_bits &= ~reseed; random_bits |= (first ? new_random_bits : base_random) & reseed; SetHouseRandomBits(tile, random_bits); diff --git a/src/newgrf_house.h b/src/newgrf_house.h index 452896923a..2ec8b91327 100644 --- a/src/newgrf_house.h +++ b/src/newgrf_house.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_house.h 26085 2013-11-24 14:41:19Z frosch $ */ +/* $Id: newgrf_house.h 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -27,13 +27,26 @@ struct HouseScopeResolver : public ScopeResolver { uint16 initial_random_bits; ///< Random bits during construction checks. uint32 watched_cargo_triggers; ///< Cargo types that triggered the watched cargo callback. + /** + * Constructor of a house scope resolver. + * @param ro Surrounding resolver. + * @param house_id House type being queried. + * @param tile %Tile containing the house. + * @param town %Town containing the house. + * @param not_yet_constructed House is still under construction. + * @param initial_random_bits Random bits during construction checks. + * @param watched_cargo_triggers Cargo types that triggered the watched cargo callback. + */ HouseScopeResolver(ResolverObject &ro, HouseID house_id, TileIndex tile, Town *town, - bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers); + bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers) + : ScopeResolver(ro), house_id(house_id), tile(tile), town(town), not_yet_constructed(not_yet_constructed), + initial_random_bits(initial_random_bits), watched_cargo_triggers(watched_cargo_triggers) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; /* virtual */ uint32 GetTriggers() const; - /* virtual */ void SetTriggers(int triggers) const; }; /** Resolver object to be used for houses (feature 07 spritegroups). */ diff --git a/src/newgrf_industries.cpp b/src/newgrf_industries.cpp index 0be46b7363..9bb021bb52 100644 --- a/src/newgrf_industries.cpp +++ b/src/newgrf_industries.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_industries.cpp 27279 2015-05-09 10:21:55Z frosch $ */ +/* $Id: newgrf_industries.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -128,7 +128,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout case 0xFFFFFFFF: // current grf GrfID = GetIndustrySpec(current->type)->grf_prop.grffile->grfid; - /* FALL THROUGH */ + FALLTHROUGH; default: // use the grfid specified in register 100h SetBit(param_setID, 7); // bit 7 means it is not an old type @@ -380,13 +380,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte param_setID, byte layout /* virtual */ uint32 IndustriesScopeResolver::GetTriggers() const { - return this->industry != NULL ? this->industry->random_triggers : 0; -} - -/* virtual */ void IndustriesScopeResolver::SetTriggers(int triggers) const -{ - assert(this->industry != NULL && this->industry->index != INVALID_INDUSTRY); - this->industry->random_triggers = triggers; + return 0; } /* virtual */ void IndustriesScopeResolver::StorePSA(uint pos, int32 value) @@ -463,23 +457,6 @@ TownScopeResolver *IndustriesResolverObject::GetTown() return this->town_scope; } -/** - * Scope resolver for industries. - * @param ro Surrounding resolver. - * @param tile %Tile owned by the industry. - * @param industry %Industry being resolved. - * @param type Type of the industry. - * @param random_bits Random bits of the new industry. - */ -IndustriesScopeResolver::IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits) - : ScopeResolver(ro) -{ - this->tile = tile; - this->industry = industry; - this->type = type; - this->random_bits = random_bits; -} - /** * Perform an industry callback. * @param callback The callback to perform. diff --git a/src/newgrf_industries.h b/src/newgrf_industries.h index 91ac891b65..24e2297f29 100644 --- a/src/newgrf_industries.h +++ b/src/newgrf_industries.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_industries.h 26085 2013-11-24 14:41:19Z frosch $ */ +/* $Id: newgrf_industries.h 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -21,12 +21,22 @@ struct IndustriesScopeResolver : public ScopeResolver { IndustryType type; ///< Type of the industry. uint32 random_bits; ///< Random bits of the new industry. - IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits = 0); + /** + * Scope resolver for industries. + * @param ro Surrounding resolver. + * @param tile %Tile owned by the industry. + * @param industry %Industry being resolved. + * @param type Type of the industry. + * @param random_bits Random bits of the new industry. + */ + IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits = 0) + : ScopeResolver(ro), tile(tile), industry(industry), type(type), random_bits(random_bits) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; /* virtual */ uint32 GetTriggers() const; - /* virtual */ void SetTriggers(int triggers) const; /* virtual */ void StorePSA(uint pos, int32 value); }; @@ -48,9 +58,11 @@ struct IndustriesResolverObject : public ResolverObject { case VSG_SCOPE_PARENT: { TownScopeResolver *tsr = this->GetTown(); if (tsr != NULL) return tsr; - /* FALL-THROUGH */ } - default: return ResolverObject::GetScope(scope, relative); + FALLTHROUGH; + + default: + return ResolverObject::GetScope(scope, relative); } } }; diff --git a/src/newgrf_industrytiles.cpp b/src/newgrf_industrytiles.cpp index af1fe61cb9..e46848424e 100644 --- a/src/newgrf_industrytiles.cpp +++ b/src/newgrf_industrytiles.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_industrytiles.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: newgrf_industrytiles.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -117,12 +117,6 @@ uint32 GetRelativePosition(TileIndex tile, TileIndex ind_tile) return GetIndustryTriggers(this->tile); } -/* virtual */ void IndustryTileScopeResolver::SetTriggers(int triggers) const -{ - assert(this->industry != NULL && this->industry->index != INVALID_INDUSTRY && IsValidTile(this->tile) && IsTileType(this->tile, MP_INDUSTRY)); - SetIndustryTriggers(this->tile, triggers); -} - /** * Get the associated NewGRF file from the industry graphics. * @param gfx Graphics to query. @@ -152,18 +146,6 @@ IndustryTileResolverObject::IndustryTileResolverObject(IndustryGfx gfx, TileInde this->root_spritegroup = GetIndustryTileSpec(gfx)->grf_prop.spritegroup[0]; } -/** - * Constructor of the scope resolver for the industry tile. - * @param ro Surrounding resolver. - * @param industry %Industry owning the tile. - * @param tile %Tile of the industry. - */ -IndustryTileScopeResolver::IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile) : ScopeResolver(ro) -{ - this->industry = industry; - this->tile = tile; -} - static void IndustryDrawTileLayout(const TileInfo *ti, const TileLayoutSpriteGroup *group, byte rnd_colour, byte stage, IndustryGfx gfx) { const DrawTileSprites *dts = group->ProcessRegisters(&stage); @@ -326,11 +308,16 @@ static void DoTriggerIndustryTile(TileIndex tile, IndustryTileTrigger trigger, I if (itspec->grf_prop.spritegroup[0] == NULL) return; IndustryTileResolverObject object(gfx, tile, ind, CBID_RANDOM_TRIGGER); - object.trigger = trigger; + object.waiting_triggers = GetIndustryTriggers(tile) | trigger; + SetIndustryTriggers(tile, object.waiting_triggers); // store now for var 5F const SpriteGroup *group = object.Resolve(); if (group == NULL) return; + /* Store remaining triggers. */ + SetIndustryTriggers(tile, object.GetRemainingTriggers()); + + /* Rerandomise tile bits */ byte new_random_bits = Random(); byte random_bits = GetIndustryRandomBits(tile); random_bits &= ~object.reseed[VSG_SCOPE_SELF]; diff --git a/src/newgrf_industrytiles.h b/src/newgrf_industrytiles.h index 3cf01de8fd..e9de0ab76e 100644 --- a/src/newgrf_industrytiles.h +++ b/src/newgrf_industrytiles.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_industrytiles.h 26085 2013-11-24 14:41:19Z frosch $ */ +/* $Id: newgrf_industrytiles.h 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -21,12 +21,20 @@ struct IndustryTileScopeResolver : public ScopeResolver { Industry *industry; ///< Industry owning the tiles. TileIndex tile; ///< %Tile being resolved. - IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile); + /** + * Constructor of the scope resolver for the industry tile. + * @param ro Surrounding resolver. + * @param industry %Industry owning the tile. + * @param tile %Tile of the industry. + */ + IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile) + : ScopeResolver(ro), industry(industry), tile(tile) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; /* virtual */ uint32 GetTriggers() const; - /* virtual */ void SetTriggers(int triggers) const; }; /** Resolver for industry tiles. */ diff --git a/src/newgrf_object.cpp b/src/newgrf_object.cpp index 9051ea96f9..fbe26f157c 100644 --- a/src/newgrf_object.cpp +++ b/src/newgrf_object.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_object.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: newgrf_object.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -128,21 +128,6 @@ bool NewGRFClass::IsUIAvailable(uint index) const INSTANTIATE_NEWGRF_CLASS_METHODS(ObjectClass, ObjectSpec, ObjectClassID, OBJECT_CLASS_MAX) -/** - * Constructor of an object scope resolver. - * @param ro Surrounding resolver. - * @param obj Object being resolved. - * @param tile %Tile of the object. - * @param view View of the object. - */ -ObjectScopeResolver::ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view) - : ScopeResolver(ro) -{ - this->obj = obj; - this->tile = tile; - this->view = view; -} - /* virtual */ uint32 ObjectScopeResolver::GetRandomBits() const { return IsValidTile(this->tile) && IsTileType(this->tile, MP_OBJECT) ? GetObjectRandomBits(this->tile) : 0; @@ -232,7 +217,7 @@ static uint32 GetCountAndDistanceOfClosestInstance(byte local_id, uint32 grfid, case 0xFFFFFFFF: // current grf grf_id = grfid; - /* FALL THROUGH */ + FALLTHROUGH; default: // use the grfid specified in register 100h idx = _object_mngr.GetID(local_id, grf_id); diff --git a/src/newgrf_object.h b/src/newgrf_object.h index 7861d43368..5c6963ddcc 100644 --- a/src/newgrf_object.h +++ b/src/newgrf_object.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_object.h 26085 2013-11-24 14:41:19Z frosch $ */ +/* $Id: newgrf_object.h 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -104,7 +104,17 @@ struct ObjectScopeResolver : public ScopeResolver { TileIndex tile; ///< The tile related to the object. uint8 view; ///< The view of the object. - ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view = 0); + /** + * Constructor of an object scope resolver. + * @param ro Surrounding resolver. + * @param obj Object being resolved. + * @param tile %Tile of the object. + * @param view View of the object. + */ + ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view = 0) + : ScopeResolver(ro), obj(obj), tile(tile), view(view) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -128,10 +138,11 @@ struct ObjectResolverObject : public ResolverObject { case VSG_SCOPE_PARENT: { TownScopeResolver *tsr = this->GetTown(); if (tsr != NULL) return tsr; - /* FALL-THROUGH */ } + FALLTHROUGH; - default: return ResolverObject::GetScope(scope, relative); + default: + return ResolverObject::GetScope(scope, relative); } } diff --git a/src/newgrf_railtype.cpp b/src/newgrf_railtype.cpp index 9a7714b7d4..d0df6e8e8a 100644 --- a/src/newgrf_railtype.cpp +++ b/src/newgrf_railtype.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_railtype.cpp 27342 2015-07-26 12:25:37Z frosch $ */ +/* $Id: newgrf_railtype.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -67,18 +67,6 @@ return NULL; } -/** - * Constructor of the railtype scope resolvers. - * @param ro Surrounding resolver. - * @param tile %Tile containing the track. For track on a bridge this is the southern bridgehead. - * @param context Are we resolving sprites for the upper halftile, or on a bridge? - */ -RailTypeScopeResolver::RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context) : ScopeResolver(ro) -{ - this->tile = tile; - this->context = context; -} - /** * Resolver object for rail types. * @param rti Railtype. NULL in NewGRF Inspect window. diff --git a/src/newgrf_railtype.h b/src/newgrf_railtype.h index 838dce26df..947d68f710 100644 --- a/src/newgrf_railtype.h +++ b/src/newgrf_railtype.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_railtype.h 27342 2015-07-26 12:25:37Z frosch $ */ +/* $Id: newgrf_railtype.h 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -21,7 +21,16 @@ struct RailTypeScopeResolver : public ScopeResolver { TileIndex tile; ///< Tracktile. For track on a bridge this is the southern bridgehead. TileContext context; ///< Are we resolving sprites for the upper halftile, or on a bridge? - RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context); + /** + * Constructor of the railtype scope resolvers. + * @param ro Surrounding resolver. + * @param tile %Tile containing the track. For track on a bridge this is the southern bridgehead. + * @param context Are we resolving sprites for the upper halftile, or on a bridge? + */ + RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context) + : ScopeResolver(ro), tile(tile), context(context) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index 5b1c04d91a..883208eb72 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_spritegroup.cpp 27600 2016-06-13 17:34:18Z frosch $ */ +/* $Id: newgrf_spritegroup.cpp 27989 2018-03-11 15:08:51Z frosch $ */ /* * This file is part of OpenTTD. @@ -10,6 +10,7 @@ /** @file newgrf_spritegroup.cpp Handling of primarily NewGRF action 2. */ #include "stdafx.h" +#include #include "debug.h" #include "newgrf_spritegroup.h" #include "core/pool_func.hpp" @@ -60,11 +61,7 @@ RandomizedSpriteGroup::~RandomizedSpriteGroup() static inline uint32 GetVariable(const ResolverObject &object, ScopeResolver *scope, byte variable, uint32 parameter, bool *available) { - /* First handle variables common with Action7/9/D */ uint32 value; - if (GetGlobalVariable(variable, &value, object.grffile)) return value; - - /* Non-common variable */ switch (variable) { case 0x0C: return object.callback; case 0x10: return object.callback_param1; @@ -79,18 +76,14 @@ static inline uint32 GetVariable(const ResolverObject &object, ScopeResolver *sc if (object.grffile == NULL) return 0; return object.grffile->GetParam(parameter); - /* Not a common variable, so evaluate the feature specific variables */ - default: return scope->GetVariable(variable, parameter, available); + default: + /* First handle variables common with Action7/9/D */ + if (variable < 0x40 && GetGlobalVariable(variable, &value, object.grffile)) return value; + /* Not a common variable, so evaluate the feature specific variables */ + return scope->GetVariable(variable, parameter, available); } } -ScopeResolver::ScopeResolver(ResolverObject &ro) - : ro(ro) -{ -} - -ScopeResolver::~ScopeResolver() {} - /** * Get a few random bits. Default implementation has no random bits. * @return Random bits. @@ -109,12 +102,6 @@ ScopeResolver::~ScopeResolver() {} return 0; } -/** - * Set the triggers. Base class implementation does nothing. - * @param triggers Triggers to set. - */ -/* virtual */ void ScopeResolver::SetTriggers(int triggers) const {} - /** * Get a variable value. Default implementation has no available variables. * @param variable Variable to read @@ -136,27 +123,6 @@ ScopeResolver::~ScopeResolver() {} */ /* virtual */ void ScopeResolver::StorePSA(uint reg, int32 value) {} -/** - * Resolver constructor. - * @param grffile NewGRF file associated with the object (or \c NULL if none). - * @param callback Callback code being resolved (default value is #CBID_NO_CALLBACK). - * @param callback_param1 First parameter (var 10) of the callback (only used when \a callback is also set). - * @param callback_param2 Second parameter (var 18) of the callback (only used when \a callback is also set). - */ -ResolverObject::ResolverObject(const GRFFile *grffile, CallbackID callback, uint32 callback_param1, uint32 callback_param2) - : default_scope(*this) -{ - this->callback = callback; - this->callback_param1 = callback_param1; - this->callback_param2 = callback_param2; - this->ResetState(); - - this->grffile = grffile; - this->root_spritegroup = NULL; -} - -ResolverObject::~ResolverObject() {} - /** * Get the real sprites of the grf. * @param group Group to get. @@ -201,11 +167,9 @@ static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, ScopeResolver value >>= adjust->shift_num; value &= adjust->and_mask; - if (adjust->type != DSGA_TYPE_NONE) value += (S)adjust->add_val; - switch (adjust->type) { - case DSGA_TYPE_DIV: value = (S)value / (S)adjust->divmod_val; break; - case DSGA_TYPE_MOD: value = (S)value % (S)adjust->divmod_val; break; + case DSGA_TYPE_DIV: value = ((S)value + (S)adjust->add_val) / (S)adjust->divmod_val; break; + case DSGA_TYPE_MOD: value = ((S)value + (S)adjust->add_val) % (S)adjust->divmod_val; break; case DSGA_TYPE_NONE: break; } @@ -238,6 +202,11 @@ static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, ScopeResolver } +static bool RangeHighComparator(const DeterministicSpriteGroupRange& range, uint32 value) +{ + return range.high < value; +} + const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) const { uint32 last_value = 0; @@ -269,7 +238,7 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con if (!available) { /* Unsupported variable: skip further processing and return either * the group from the first range or the default group. */ - return SpriteGroup::Resolve(this->num_ranges > 0 ? this->ranges[0].group : this->default_group, object, false); + return SpriteGroup::Resolve(this->error_group, object, false); } switch (this->size) { @@ -283,7 +252,7 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con object.last_value = last_value; - if (this->num_ranges == 0) { + if (this->calculated_result) { /* nvar == 0 is a special case -- we turn our value into a callback result */ if (value != CALLBACK_FAILED) value = GB(value, 0, 15); static CallbackResultSpriteGroup nvarzero(0, true); @@ -291,9 +260,17 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con return &nvarzero; } - for (i = 0; i < this->num_ranges; i++) { - if (this->ranges[i].low <= value && value <= this->ranges[i].high) { - return SpriteGroup::Resolve(this->ranges[i].group, object, false); + if (this->num_ranges > 4) { + DeterministicSpriteGroupRange *lower = std::lower_bound(this->ranges + 0, this->ranges + this->num_ranges, value, RangeHighComparator); + if (lower != this->ranges + this->num_ranges && lower->low <= value) { + assert(lower->low <= value && value <= lower->high); + return SpriteGroup::Resolve(lower->group, object, false); + } + } else { + for (i = 0; i < this->num_ranges; i++) { + if (this->ranges[i].low <= value && value <= this->ranges[i].high) { + return SpriteGroup::Resolve(this->ranges[i].group, object, false); + } } } @@ -304,21 +281,15 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con const SpriteGroup *RandomizedSpriteGroup::Resolve(ResolverObject &object) const { ScopeResolver *scope = object.GetScope(this->var_scope, this->count); - if (object.trigger != 0) { + if (object.callback == CBID_RANDOM_TRIGGER) { /* Handle triggers */ - /* Magic code that may or may not do the right things... */ - byte waiting_triggers = scope->GetTriggers(); - byte match = this->triggers & (waiting_triggers | object.trigger); + byte match = this->triggers & object.waiting_triggers; bool res = (this->cmp_mode == RSG_CMP_ANY) ? (match != 0) : (match == this->triggers); if (res) { - waiting_triggers &= ~match; + object.used_triggers |= match; object.reseed[this->var_scope] |= (this->num_groups - 1) << this->lowest_randbit; - } else { - waiting_triggers |= object.trigger; } - - scope->SetTriggers(waiting_triggers); } uint32 mask = (this->num_groups - 1) << this->lowest_randbit; diff --git a/src/newgrf_spritegroup.h b/src/newgrf_spritegroup.h index c2eb38532b..d965d2846a 100644 --- a/src/newgrf_spritegroup.h +++ b/src/newgrf_spritegroup.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_spritegroup.h 26388 2014-03-03 20:02:31Z frosch $ */ +/* $Id: newgrf_spritegroup.h 27989 2018-03-11 15:08:51Z frosch $ */ /* * This file is part of OpenTTD. @@ -174,13 +174,16 @@ struct DeterministicSpriteGroup : SpriteGroup { VarSpriteGroupScope var_scope; DeterministicSpriteGroupSize size; uint num_adjusts; - byte num_ranges; + uint num_ranges; + bool calculated_result; DeterministicSpriteGroupAdjust *adjusts; DeterministicSpriteGroupRange *ranges; // Dynamically allocated /* Dynamically allocated, this is the sole owner */ const SpriteGroup *default_group; + const SpriteGroup *error_group; // was first range, before sorting ranges + protected: const SpriteGroup *Resolve(ResolverObject &object) const; }; @@ -288,12 +291,11 @@ struct IndustryProductionSpriteGroup : SpriteGroup { struct ScopeResolver { ResolverObject &ro; ///< Surrounding resolver object. - ScopeResolver(ResolverObject &ro); - virtual ~ScopeResolver(); + ScopeResolver(ResolverObject &ro) : ro(ro) {} + virtual ~ScopeResolver() {} virtual uint32 GetRandomBits() const; virtual uint32 GetTriggers() const; - virtual void SetTriggers(int triggers) const; virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; virtual void StorePSA(uint reg, int32 value); @@ -306,8 +308,20 @@ struct ScopeResolver { * to get the results of callbacks, rerandomisations or normal sprite lookups. */ struct ResolverObject { - ResolverObject(const GRFFile *grffile, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); - virtual ~ResolverObject(); + /** + * Resolver constructor. + * @param grffile NewGRF file associated with the object (or \c NULL if none). + * @param callback Callback code being resolved (default value is #CBID_NO_CALLBACK). + * @param callback_param1 First parameter (var 10) of the callback (only used when \a callback is also set). + * @param callback_param2 Second parameter (var 18) of the callback (only used when \a callback is also set). + */ + ResolverObject(const GRFFile *grffile, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0) + : default_scope(*this), callback(callback), callback_param1(callback_param1), callback_param2(callback_param2), grffile(grffile), root_spritegroup(NULL) + { + this->ResetState(); + } + + virtual ~ResolverObject() {} ScopeResolver default_scope; ///< Default implementation of the grf scope. @@ -315,9 +329,10 @@ struct ResolverObject { uint32 callback_param1; ///< First parameter (var 10) of the callback. uint32 callback_param2; ///< Second parameter (var 18) of the callback. - byte trigger; - uint32 last_value; ///< Result of most recent DeterministicSpriteGroup (including procedure calls) + + uint32 waiting_triggers; ///< Waiting triggers to be used by any rerandomisation. (scope independent) + uint32 used_triggers; ///< Subset of cur_triggers, which actually triggered some rerandomisation. (scope independent) uint32 reseed[VSG_END]; ///< Collects bits to rerandomise while triggering triggers. const GRFFile *grffile; ///< GRFFile the resolved SpriteGroup belongs to @@ -346,6 +361,14 @@ struct ResolverObject { virtual ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, byte relative = 0); + /** + * Returns the waiting triggers that did not trigger any rerandomisation. + */ + uint32 GetRemainingTriggers() const + { + return this->waiting_triggers & ~this->used_triggers; + } + /** * Returns the OR-sum of all bits that need reseeding * independent of the scope they were accessed with. @@ -367,7 +390,8 @@ struct ResolverObject { void ResetState() { this->last_value = 0; - this->trigger = 0; + this->waiting_triggers = 0; + this->used_triggers = 0; memset(this->reseed, 0, sizeof(this->reseed)); } }; diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index a3548ec945..c417dde44c 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_station.cpp 26580 2014-05-11 18:02:11Z rubidium $ */ +/* $Id: newgrf_station.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -235,13 +235,6 @@ static uint32 GetRailContinuationInfo(TileIndex tile) } -/* virtual */ void StationScopeResolver::SetTriggers(int triggers) const -{ - BaseStation *st = const_cast(this->st); - assert(st != NULL); - st->waiting_triggers = triggers; -} - /** * Station variable cache * This caches 'expensive' station variable lookups which iterate over @@ -585,23 +578,6 @@ StationResolverObject::~StationResolverObject() delete this->town_scope; } -/** - * Constructor for station scopes. - * @param ro Surrounding resolver. - * @param statspec Station (type) specification. - * @param st Instance of the station. - * @param tile %Tile of the station. - */ -StationScopeResolver::StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile) - : ScopeResolver(ro) -{ - this->tile = tile; - this->st = st; - this->statspec = statspec; - this->cargo_type = CT_INVALID; - this->axis = INVALID_AXIS; -} - /** * Resolve sprites for drawing a station tile. * @param statspec Station spec @@ -997,8 +973,9 @@ void TriggerStationRandomisation(Station *st, TileIndex tile, StationRandomTrigg } } - /* Convert trigger to bit */ - uint8 trigger_bit = 1 << trigger; + /* Store triggers now for var 5F */ + SetBit(st->waiting_triggers, trigger); + uint32 used_triggers = 0; /* Check all tiles over the station to check if the specindex is still in use */ TILE_AREA_LOOP(tile, area) { @@ -1014,11 +991,13 @@ void TriggerStationRandomisation(Station *st, TileIndex tile, StationRandomTrigg if (cargo_type == CT_INVALID || HasBit(ss->cargo_triggers, cargo_type)) { StationResolverObject object(ss, st, tile, CBID_RANDOM_TRIGGER, 0); - object.trigger = trigger_bit; + object.waiting_triggers = st->waiting_triggers; const SpriteGroup *group = object.Resolve(); if (group == NULL) continue; + used_triggers |= object.used_triggers; + uint32 reseed = object.GetReseedSum(); if (reseed != 0) { whole_reseed |= reseed; @@ -1037,6 +1016,7 @@ void TriggerStationRandomisation(Station *st, TileIndex tile, StationRandomTrigg } /* Update whole station random bits */ + st->waiting_triggers &= ~used_triggers; if ((whole_reseed & 0xFFFF) != 0) { st->random_bits &= ~whole_reseed; st->random_bits |= Random() & whole_reseed; diff --git a/src/newgrf_station.h b/src/newgrf_station.h index cfa04af352..aad2edda47 100644 --- a/src/newgrf_station.h +++ b/src/newgrf_station.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_station.h 26085 2013-11-24 14:41:19Z frosch $ */ +/* $Id: newgrf_station.h 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -30,11 +30,20 @@ struct StationScopeResolver : public ScopeResolver { CargoID cargo_type; ///< Type of cargo of the station. Axis axis; ///< Station axis, used only for the slope check callback. - StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile); + /** + * Constructor for station scopes. + * @param ro Surrounding resolver. + * @param statspec Station (type) specification. + * @param st Instance of the station. + * @param tile %Tile of the station. + */ + StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile) + : ScopeResolver(ro), tile(tile), st(st), statspec(statspec), cargo_type(CT_INVALID), axis(INVALID_AXIS) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetTriggers() const; - /* virtual */ void SetTriggers(int triggers) const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; }; @@ -59,8 +68,8 @@ struct StationResolverObject : public ResolverObject { case VSG_SCOPE_PARENT: { TownScopeResolver *tsr = this->GetTown(); if (tsr != NULL) return tsr; - /* FALL-THROUGH */ } + FALLTHROUGH; default: return ResolverObject::GetScope(scope, relative); diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp index c7654b8526..8157bcbbba 100644 --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_text.cpp 27864 2017-05-03 20:13:05Z frosch $ */ +/* $Id: newgrf_text.cpp 27851 2017-04-09 21:58:07Z peter1138 $ */ /* * This file is part of OpenTTD. diff --git a/src/newgrf_text.h b/src/newgrf_text.h index 961fc8a23a..6502adac29 100644 --- a/src/newgrf_text.h +++ b/src/newgrf_text.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_text.h 27864 2017-05-03 20:13:05Z frosch $ */ +/* $Id: newgrf_text.h 27851 2017-04-09 21:58:07Z peter1138 $ */ /* * This file is part of OpenTTD. diff --git a/src/newgrf_town.cpp b/src/newgrf_town.cpp index f0cc5a3118..1fab2a48ee 100644 --- a/src/newgrf_town.cpp +++ b/src/newgrf_town.cpp @@ -1,4 +1,4 @@ -/* $Id: newgrf_town.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: newgrf_town.cpp 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -16,18 +16,6 @@ #include "safeguards.h" -/** - * Resolver of a town scope. - * @param ro Surrounding resolver. - * @param t %Town of the scope. - * @param readonly Scope may change persistent storage of the town. - */ -TownScopeResolver::TownScopeResolver(ResolverObject &ro, Town *t, bool readonly) : ScopeResolver(ro) -{ - this->t = t; - this->readonly = readonly; -} - /* virtual */ uint32 TownScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { switch (variable) { diff --git a/src/newgrf_town.h b/src/newgrf_town.h index 83dfd6885c..a1575f4131 100644 --- a/src/newgrf_town.h +++ b/src/newgrf_town.h @@ -1,4 +1,4 @@ -/* $Id: newgrf_town.h 26085 2013-11-24 14:41:19Z frosch $ */ +/* $Id: newgrf_town.h 27984 2018-03-11 13:19:41Z frosch $ */ /* * This file is part of OpenTTD. @@ -25,7 +25,16 @@ struct TownScopeResolver : public ScopeResolver { Town *t; ///< %Town of the scope. bool readonly; ///< When set, persistent storage of the town is read-only, - TownScopeResolver(ResolverObject &ro, Town *t, bool readonly); + /** + * Resolver of a town scope. + * @param ro Surrounding resolver. + * @param t %Town of the scope. + * @param readonly Scope may change persistent storage of the town. + */ + TownScopeResolver(ResolverObject &ro, Town *t, bool readonly) + : ScopeResolver(ro), t(t), readonly(readonly) + { + } virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; virtual void StorePSA(uint reg, int32 value); diff --git a/src/news_gui.cpp b/src/news_gui.cpp index 50f4be6280..62ea864846 100644 --- a/src/news_gui.cpp +++ b/src/news_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: news_gui.cpp 27864 2017-05-03 20:13:05Z frosch $ */ +/* $Id: news_gui.cpp 27838 2017-03-31 23:09:50Z peter1138 $ */ /* * This file is part of OpenTTD. diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index e3ae8c20f7..55266fe104 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: order_cmd.cpp 26694 2014-07-16 22:24:55Z frosch $ */ +/* $Id: order_cmd.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -772,7 +772,8 @@ CommandCost CmdInsertOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 case OSL_PLATFORM_NEAR_END: case OSL_PLATFORM_MIDDLE: if (v->type != VEH_TRAIN) return CMD_ERROR; - /* FALL THROUGH */ + FALLTHROUGH; + case OSL_PLATFORM_FAR_END: break; @@ -880,7 +881,8 @@ CommandCost CmdInsertOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 case OCV_LOAD_PERCENTAGE: case OCV_RELIABILITY: if (new_order.GetConditionValue() > 100) return CMD_ERROR; - /* FALL THROUGH */ + FALLTHROUGH; + default: if (occ == OCC_IS_TRUE || occ == OCC_IS_FALSE) return CMD_ERROR; break; @@ -1466,7 +1468,8 @@ CommandCost CmdModifyOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 case OCV_LOAD_PERCENTAGE: case OCV_RELIABILITY: if (order->GetConditionValue() > 100) order->SetConditionValue(100); - /* FALL THROUGH */ + FALLTHROUGH; + default: if (occ == OCC_IS_TRUE || occ == OCC_IS_FALSE) order->SetConditionComparator(OCC_EQUALS); break; diff --git a/src/order_gui.cpp b/src/order_gui.cpp index 56b4c15521..e57e987d5c 100644 --- a/src/order_gui.cpp +++ b/src/order_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: order_gui.cpp 27425 2015-10-30 17:23:16Z frosch $ */ +/* $Id: order_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -841,7 +841,7 @@ public: case VIWD_AUTOREPLACE: /* Autoreplace replaced the vehicle */ this->vehicle = Vehicle::Get(this->window_number); - /* FALL THROUGH */ + FALLTHROUGH; case VIWD_CONSIST_CHANGED: /* Vehicle composition was changed. */ diff --git a/src/os/windows/ottdres.rc.in b/src/os/windows/ottdres.rc.in index 035411f174..0b4b17de47 100644 --- a/src/os/windows/ottdres.rc.in +++ b/src/os/windows/ottdres.rc.in @@ -1,5 +1,5 @@ //Microsoft Developer Studio generated resource script. -// $Id: ottdres.rc.in 27949 2017-12-24 12:09:20Z frosch $ +// $Id: ottdres.rc.in 27980 2018-03-11 12:24:32Z frosch $ // // 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. @@ -79,8 +79,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,7,2,!!REVISION!! - PRODUCTVERSION 1,7,2,!!REVISION!! + FILEVERSION 1,8,0,!!REVISION!! + PRODUCTVERSION 1,8,0,!!REVISION!! FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -100,7 +100,7 @@ BEGIN VALUE "FileDescription", "OpenTTD\0" VALUE "FileVersion", "!!VERSION!!\0" VALUE "InternalName", "openttd\0" - VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2017. All Rights Reserved.\0" + VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2018. All Rights Reserved.\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "openttd.exe\0" VALUE "PrivateBuild", "\0" diff --git a/src/pathfinder/npf/npf.cpp b/src/pathfinder/npf/npf.cpp index d598f03b4d..fc36de5fc3 100644 --- a/src/pathfinder/npf/npf.cpp +++ b/src/pathfinder/npf/npf.cpp @@ -1,4 +1,4 @@ -/* $Id: npf.cpp 27733 2017-01-15 13:59:46Z frosch $ */ +/* $Id: npf.cpp 27912 2017-09-03 13:06:29Z michi_cc $ */ /* * This file is part of OpenTTD. @@ -961,7 +961,7 @@ static void NPFFollowTrack(AyStar *aystar, OpenListNode *current) * multiple targets that are spread around, we should perform a breadth first * search by specifiying CalcZero as our heuristic. */ -static NPFFoundTargetData NPFRouteInternal(AyStarNode *start1, bool ignore_start_tile1, AyStarNode *start2, bool ignore_start_tile2, NPFFindStationOrTileData *target, AyStar_EndNodeCheck target_proc, AyStar_CalculateH heuristic_proc, AyStarUserData *user, uint reverse_penalty) +static NPFFoundTargetData NPFRouteInternal(AyStarNode *start1, bool ignore_start_tile1, AyStarNode *start2, bool ignore_start_tile2, NPFFindStationOrTileData *target, AyStar_EndNodeCheck target_proc, AyStar_CalculateH heuristic_proc, AyStarUserData *user, uint reverse_penalty, bool ignore_reserved = false) { int r; NPFFoundTargetData result; @@ -982,12 +982,14 @@ static NPFFoundTargetData NPFRouteInternal(AyStarNode *start1, bool ignore_start start1->user_data[NPF_TRACKDIR_CHOICE] = INVALID_TRACKDIR; start1->user_data[NPF_NODE_FLAGS] = 0; NPFSetFlag(start1, NPF_FLAG_IGNORE_START_TILE, ignore_start_tile1); + NPFSetFlag(start1, NPF_FLAG_IGNORE_RESERVED, ignore_reserved); _npf_aystar.AddStartNode(start1, 0); if (start2 != NULL) { start2->user_data[NPF_TRACKDIR_CHOICE] = INVALID_TRACKDIR; start2->user_data[NPF_NODE_FLAGS] = 0; NPFSetFlag(start2, NPF_FLAG_IGNORE_START_TILE, ignore_start_tile2); NPFSetFlag(start2, NPF_FLAG_REVERSE, true); + NPFSetFlag(start2, NPF_FLAG_IGNORE_RESERVED, ignore_reserved); _npf_aystar.AddStartNode(start2, reverse_penalty); } @@ -1031,12 +1033,8 @@ static NPFFoundTargetData NPFRouteToStationOrTileTwoWay(TileIndex tile1, Trackdi start1.tile = tile1; start2.tile = tile2; - /* We set this in case the target is also the start tile, we will just - * return a not found then */ - start1.user_data[NPF_TRACKDIR_CHOICE] = INVALID_TRACKDIR; start1.direction = trackdir1; start2.direction = trackdir2; - start2.user_data[NPF_TRACKDIR_CHOICE] = INVALID_TRACKDIR; return NPFRouteInternal(&start1, ignore_start_tile1, (IsValidTile(tile2) ? &start2 : NULL), ignore_start_tile2, target, NPFFindStationOrTile, NPFCalcStationOrTileHeuristic, user, 0); } @@ -1063,12 +1061,8 @@ static NPFFoundTargetData NPFRouteToDepotBreadthFirstTwoWay(TileIndex tile1, Tra start1.tile = tile1; start2.tile = tile2; - /* We set this in case the target is also the start tile, we will just - * return a not found then */ - start1.user_data[NPF_TRACKDIR_CHOICE] = INVALID_TRACKDIR; start1.direction = trackdir1; start2.direction = trackdir2; - start2.user_data[NPF_TRACKDIR_CHOICE] = INVALID_TRACKDIR; /* perform a breadth first search. Target is NULL, * since we are just looking for any depot...*/ @@ -1233,11 +1227,7 @@ bool NPFTrainFindNearestSafeTile(const Train *v, TileIndex tile, Trackdir trackd AyStarNode start1; start1.tile = tile; - /* We set this in case the target is also the start tile, we will just - * return a not found then */ - start1.user_data[NPF_TRACKDIR_CHOICE] = INVALID_TRACKDIR; start1.direction = trackdir; - NPFSetFlag(&start1, NPF_FLAG_IGNORE_RESERVED, true); RailTypes railtypes = v->compatible_railtypes; if (override_railtype) railtypes |= GetRailTypeInfo(v->railtype)->compatible_railtypes; @@ -1245,7 +1235,7 @@ bool NPFTrainFindNearestSafeTile(const Train *v, TileIndex tile, Trackdir trackd /* perform a breadth first search. Target is NULL, * since we are just looking for any safe tile...*/ AyStarUserData user = { v->owner, TRANSPORT_RAIL, railtypes, ROADTYPES_NONE }; - return NPFRouteInternal(&start1, true, NULL, false, &fstd, NPFFindSafeTile, NPFCalcZero, &user, 0).res_okay; + return NPFRouteInternal(&start1, true, NULL, false, &fstd, NPFFindSafeTile, NPFCalcZero, &user, 0, true).res_okay; } bool NPFTrainCheckReverse(const Train *v) diff --git a/src/pathfinder/yapf/yapf_costrail.hpp b/src/pathfinder/yapf/yapf_costrail.hpp index b096333904..25b2deab32 100644 --- a/src/pathfinder/yapf/yapf_costrail.hpp +++ b/src/pathfinder/yapf/yapf_costrail.hpp @@ -1,4 +1,4 @@ -/* $Id: yapf_costrail.hpp 27864 2017-05-03 20:13:05Z frosch $ */ +/* $Id: yapf_costrail.hpp 27885 2017-06-22 16:57:06Z frosch $ */ /* * This file is part of OpenTTD. @@ -562,6 +562,9 @@ no_entry_cost: // jump here at the beginning if the node has no parent (it is th } // for (;;) + /* Don't consider path any further it if exceeded max_cost. */ + if (end_segment_reason & ESRB_PATH_TOO_LONG) return false; + bool target_seen = false; if ((end_segment_reason & ESRB_POSSIBLE_TARGET) != ESRB_NONE) { /* Depot, station or waypoint. */ diff --git a/src/pathfinder/yapf/yapf_destrail.hpp b/src/pathfinder/yapf/yapf_destrail.hpp index 163226ef8c..0c6042b437 100644 --- a/src/pathfinder/yapf/yapf_destrail.hpp +++ b/src/pathfinder/yapf/yapf_destrail.hpp @@ -1,4 +1,4 @@ -/* $Id: yapf_destrail.hpp 27363 2015-08-08 13:19:38Z alberth $ */ +/* $Id: yapf_destrail.hpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -140,7 +140,8 @@ public: * waypoint. */ Yapf().DisableCache(true); } - /* FALL THROUGH */ + FALLTHROUGH; + case OT_GOTO_STATION: m_destTile = CalcClosestStationTile(v->current_order.GetDestination(), v->tile, v->current_order.IsType(OT_GOTO_STATION) ? STATION_RAIL : STATION_WAYPOINT); m_dest_station_id = v->current_order.GetDestination(); diff --git a/src/pathfinder/yapf/yapf_rail.cpp b/src/pathfinder/yapf/yapf_rail.cpp index 52bbffe99b..7d1b2da440 100644 --- a/src/pathfinder/yapf/yapf_rail.cpp +++ b/src/pathfinder/yapf/yapf_rail.cpp @@ -1,4 +1,4 @@ -/* $Id: yapf_rail.cpp 27362 2015-08-08 10:06:24Z alberth $ */ +/* $Id: yapf_rail.cpp 27845 2017-04-03 22:02:28Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -223,7 +223,7 @@ public: return 't'; } - static bool stFindNearestDepotTwoWay(const Train *v, TileIndex t1, Trackdir td1, TileIndex t2, Trackdir td2, int max_penalty, int reverse_penalty, TileIndex *depot_tile, bool *reversed) + static FindDepotData stFindNearestDepotTwoWay(const Train *v, TileIndex t1, Trackdir td1, TileIndex t2, Trackdir td2, int max_penalty, int reverse_penalty) { Tpf pf1; /* @@ -236,16 +236,16 @@ public: * depot orders and you do not disable automatic servicing. */ if (max_penalty != 0) pf1.DisableCache(true); - bool result1 = pf1.FindNearestDepotTwoWay(v, t1, td1, t2, td2, max_penalty, reverse_penalty, depot_tile, reversed); + FindDepotData result1 = pf1.FindNearestDepotTwoWay(v, t1, td1, t2, td2, max_penalty, reverse_penalty); if (_debug_desync_level >= 2) { Tpf pf2; - TileIndex depot_tile2 = INVALID_TILE; - bool reversed2 = false; pf2.DisableCache(true); - bool result2 = pf2.FindNearestDepotTwoWay(v, t1, td1, t2, td2, max_penalty, reverse_penalty, &depot_tile2, &reversed2); - if (result1 != result2 || (result1 && (*depot_tile != depot_tile2 || *reversed != reversed2))) { - DEBUG(desync, 2, "CACHE ERROR: FindNearestDepotTwoWay() = [%s, %s]", result1 ? "T" : "F", result2 ? "T" : "F"); + FindDepotData result2 = pf2.FindNearestDepotTwoWay(v, t1, td1, t2, td2, max_penalty, reverse_penalty); + if (result1.tile != result2.tile || (result1.reverse != result2.reverse)) { + DEBUG(desync, 2, "CACHE ERROR: FindNearestDepotTwoWay() = [%s, %s]", + result1.tile != INVALID_TILE ? "T" : "F", + result2.tile != INVALID_TILE ? "T" : "F"); DumpState(pf1, pf2); } } @@ -253,7 +253,7 @@ public: return result1; } - inline bool FindNearestDepotTwoWay(const Train *v, TileIndex t1, Trackdir td1, TileIndex t2, Trackdir td2, int max_penalty, int reverse_penalty, TileIndex *depot_tile, bool *reversed) + inline FindDepotData FindNearestDepotTwoWay(const Train *v, TileIndex t1, Trackdir td1, TileIndex t2, Trackdir td2, int max_penalty, int reverse_penalty) { /* set origin and destination nodes */ Yapf().SetOrigin(t1, td1, t2, td2, reverse_penalty, true); @@ -261,13 +261,10 @@ public: Yapf().SetMaxCost(max_penalty); /* find the best path */ - bool bFound = Yapf().FindPath(v); - if (!bFound) return false; + if (!Yapf().FindPath(v)) return FindDepotData(); - /* some path found - * get found depot tile */ + /* Some path found. */ Node *n = Yapf().GetBestNode(); - *depot_tile = n->GetLastTile(); /* walk through the path back to the origin */ Node *pNode = n; @@ -277,9 +274,7 @@ public: /* if the origin node is our front vehicle tile/Trackdir then we didn't reverse * but we can also look at the cost (== 0 -> not reversed, == reverse_penalty -> reversed) */ - *reversed = (pNode->m_cost != 0); - - return true; + return FindDepotData(n->GetLastTile(), n->m_cost, pNode->m_cost != 0); } }; @@ -611,15 +606,13 @@ bool YapfTrainCheckReverse(const Train *v) FindDepotData YapfTrainFindNearestDepot(const Train *v, int max_penalty) { - FindDepotData fdd; - const Train *last_veh = v->Last(); PBSTileInfo origin = FollowTrainReservation(v); TileIndex last_tile = last_veh->tile; Trackdir td_rev = ReverseTrackdir(last_veh->GetVehicleTrackdir()); - typedef bool (*PfnFindNearestDepotTwoWay)(const Train*, TileIndex, Trackdir, TileIndex, Trackdir, int, int, TileIndex*, bool*); + typedef FindDepotData (*PfnFindNearestDepotTwoWay)(const Train*, TileIndex, Trackdir, TileIndex, Trackdir, int, int); PfnFindNearestDepotTwoWay pfnFindNearestDepotTwoWay = &CYapfAnyDepotRail1::stFindNearestDepotTwoWay; /* check if non-default YAPF type needed */ @@ -627,9 +620,7 @@ FindDepotData YapfTrainFindNearestDepot(const Train *v, int max_penalty) pfnFindNearestDepotTwoWay = &CYapfAnyDepotRail2::stFindNearestDepotTwoWay; // Trackdir, forbid 90-deg } - bool ret = pfnFindNearestDepotTwoWay(v, origin.tile, origin.trackdir, last_tile, td_rev, max_penalty, YAPF_INFINITE_PENALTY, &fdd.tile, &fdd.reverse); - fdd.best_length = ret ? max_penalty / 2 : UINT_MAX; // some fake distance or NOT_FOUND - return fdd; + return pfnFindNearestDepotTwoWay(v, origin.tile, origin.trackdir, last_tile, td_rev, max_penalty, YAPF_INFINITE_PENALTY); } bool YapfTrainFindNearestSafeTile(const Train *v, TileIndex tile, Trackdir td, bool override_railtype) diff --git a/src/pathfinder/yapf/yapf_type.hpp b/src/pathfinder/yapf/yapf_type.hpp index bc7738be26..19dd33e88d 100644 --- a/src/pathfinder/yapf/yapf_type.hpp +++ b/src/pathfinder/yapf/yapf_type.hpp @@ -1,4 +1,4 @@ -/* $Id: yapf_type.hpp 25608 2013-07-14 09:20:34Z rubidium $ */ +/* $Id: yapf_type.hpp 27885 2017-06-22 16:57:06Z frosch $ */ /* * This file is part of OpenTTD. diff --git a/src/rail.cpp b/src/rail.cpp index 65fa8b8f5b..50da9d3e0f 100644 --- a/src/rail.cpp +++ b/src/rail.cpp @@ -1,4 +1,4 @@ -/* $Id: rail.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: rail.cpp 27808 2017-03-19 22:30:47Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -56,7 +56,7 @@ extern const Trackdir _next_trackdir[TRACKDIR_END] = { }; /* Maps a trackdir to all trackdirs that make 90 deg turns with it. */ -extern const TrackdirBits _track_crosses_trackdirs[TRACKDIR_END] = { +extern const TrackdirBits _track_crosses_trackdirs[TRACK_END] = { TRACKDIR_BIT_Y_SE | TRACKDIR_BIT_Y_NW, // TRACK_X TRACKDIR_BIT_X_NE | TRACKDIR_BIT_X_SW, // TRACK_Y TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_RIGHT_S | TRACKDIR_BIT_LEFT_N | TRACKDIR_BIT_LEFT_S, // TRACK_UPPER diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index a59e6eb0d2..5b7bb2a97b 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: rail_cmd.cpp 27862 2017-05-03 20:05:52Z frosch $ */ +/* $Id: rail_cmd.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -554,8 +554,8 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u if (IsLevelCrossing(tile) && GetCrossingRailBits(tile) == trackbit) { return_cmd_error(STR_ERROR_ALREADY_BUILT); } - /* FALL THROUGH */ } + FALLTHROUGH; default: { /* Will there be flat water on the lower halftile? */ @@ -2444,33 +2444,60 @@ static void DrawTile_Track(TileInfo *ti) SpriteID ground = GetCustomRailSprite(rti, ti->tile, RTSG_GROUND); switch (GetRailDepotDirection(ti->tile)) { - case DIAGDIR_NE: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH - case DIAGDIR_SW: DrawGroundSprite(ground + RTO_X, PAL_NONE); break; - case DIAGDIR_NW: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH - case DIAGDIR_SE: DrawGroundSprite(ground + RTO_Y, PAL_NONE); break; - default: break; + case DIAGDIR_NE: + if (!IsInvisibilitySet(TO_BUILDINGS)) break; + FALLTHROUGH; + case DIAGDIR_SW: + DrawGroundSprite(ground + RTO_X, PAL_NONE); + break; + case DIAGDIR_NW: + if (!IsInvisibilitySet(TO_BUILDINGS)) break; + FALLTHROUGH; + case DIAGDIR_SE: + DrawGroundSprite(ground + RTO_Y, PAL_NONE); + break; + default: + break; } if (_settings_client.gui.show_track_reservation && HasDepotReservation(ti->tile)) { SpriteID overlay = GetCustomRailSprite(rti, ti->tile, RTSG_OVERLAY); switch (GetRailDepotDirection(ti->tile)) { - case DIAGDIR_NE: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH - case DIAGDIR_SW: DrawGroundSprite(overlay + RTO_X, PALETTE_CRASH); break; - case DIAGDIR_NW: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH - case DIAGDIR_SE: DrawGroundSprite(overlay + RTO_Y, PALETTE_CRASH); break; - default: break; + case DIAGDIR_NE: + if (!IsInvisibilitySet(TO_BUILDINGS)) break; + FALLTHROUGH; + case DIAGDIR_SW: + DrawGroundSprite(overlay + RTO_X, PALETTE_CRASH); + break; + case DIAGDIR_NW: + if (!IsInvisibilitySet(TO_BUILDINGS)) break; + FALLTHROUGH; + case DIAGDIR_SE: + DrawGroundSprite(overlay + RTO_Y, PALETTE_CRASH); + break; + default: + break; } } } else { /* PBS debugging, draw reserved tracks darker */ if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasDepotReservation(ti->tile)) { switch (GetRailDepotDirection(ti->tile)) { - case DIAGDIR_NE: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH - case DIAGDIR_SW: DrawGroundSprite(rti->base_sprites.single_x, PALETTE_CRASH); break; - case DIAGDIR_NW: if (!IsInvisibilitySet(TO_BUILDINGS)) break; // else FALL THROUGH - case DIAGDIR_SE: DrawGroundSprite(rti->base_sprites.single_y, PALETTE_CRASH); break; - default: break; + case DIAGDIR_NE: + if (!IsInvisibilitySet(TO_BUILDINGS)) break; + FALLTHROUGH; + case DIAGDIR_SW: + DrawGroundSprite(rti->base_sprites.single_x, PALETTE_CRASH); + break; + case DIAGDIR_NW: + if (!IsInvisibilitySet(TO_BUILDINGS)) break; + FALLTHROUGH; + case DIAGDIR_SE: + DrawGroundSprite(rti->base_sprites.single_y, PALETTE_CRASH); + break; + default: + break; } } } diff --git a/src/rev.cpp b/src/rev.cpp index cf6d28018c..c6c5a02e68 100644 --- a/src/rev.cpp +++ b/src/rev.cpp @@ -1,4 +1,4 @@ -/* $Id: rev.cpp.in 27949 2017-12-24 12:09:20Z frosch $ */ +/* $Id: rev.cpp.in 28002 2018-04-01 11:14:34Z frosch $ */ /* * This file is part of OpenTTD. @@ -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.7.2"; +const char _openttd_revision[] = "h24491fc8M-openttd"; /** * 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 = 0; +const byte _openttd_revision_modified = 2; /** * The NewGRF revision of OTTD: @@ -72,11 +72,11 @@ const byte _openttd_revision_modified = 0; * 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 | 7 << 24 | 2 << 20 | 1 << 19 | (27949 & ((1 << 19) - 1)); +const uint32 _openttd_newgrf_version = 1 << 28 | 8 << 24 | 0 << 20 | 1 << 19 | (0 & ((1 << 19) - 1)); #ifdef __MORPHOS__ /** * Variable used by MorphOS to show the version. */ -extern const char morphos_versions_tag[] = "$VER: OpenTTD 1.7.2 (15.01.18) OpenTTD Team [MorphOS, PowerPC]"; +extern const char morphos_versions_tag[] = "$VER: OpenTTD h24491fc8M-openttd (06.04.18) OpenTTD Team [MorphOS, PowerPC]"; #endif diff --git a/src/rev.cpp.in b/src/rev.cpp.in index 8145d7882c..32a7d75390 100644 --- a/src/rev.cpp.in +++ b/src/rev.cpp.in @@ -1,4 +1,4 @@ -/* $Id: rev.cpp.in 27949 2017-12-24 12:09:20Z frosch $ */ +/* $Id: rev.cpp.in 28002 2018-04-01 11:14:34Z frosch $ */ /* * This file is part of OpenTTD. @@ -72,7 +72,7 @@ const byte _openttd_revision_modified = !!MODIFIED!!; * 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 | 7 << 24 | 2 << 20 | 1 << 19 | (!!REVISION!! & ((1 << 19) - 1)); +const uint32 _openttd_newgrf_version = 1 << 28 | 8 << 24 | 0 << 20 | 1 << 19 | (!!REVISION!! & ((1 << 19) - 1)); #ifdef __MORPHOS__ /** diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 4cbcd4d0a1..9de4347d52 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: roadveh_cmd.cpp 27667 2016-10-16 14:58:38Z frosch $ */ +/* $Id: roadveh_cmd.cpp 27814 2017-03-20 18:16:23Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -69,24 +69,10 @@ bool IsValidImageIndex(uint8 image_index) return image_index < lengthof(_roadveh_images); } -/** 'Convert' the DiagDirection where a road vehicle enters to the trackdirs it can drive onto */ -static const TrackdirBits _road_enter_dir_to_reachable_trackdirs[DIAGDIR_END] = { - TRACKDIR_BIT_LEFT_N | TRACKDIR_BIT_LOWER_E | TRACKDIR_BIT_X_NE, // Enter from north east - TRACKDIR_BIT_LEFT_S | TRACKDIR_BIT_UPPER_E | TRACKDIR_BIT_Y_SE, // Enter from south east - TRACKDIR_BIT_UPPER_W | TRACKDIR_BIT_X_SW | TRACKDIR_BIT_RIGHT_S, // Enter from south west - TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_LOWER_W | TRACKDIR_BIT_Y_NW // Enter from north west -}; - static const Trackdir _road_reverse_table[DIAGDIR_END] = { TRACKDIR_RVREV_NE, TRACKDIR_RVREV_SE, TRACKDIR_RVREV_SW, TRACKDIR_RVREV_NW }; -/** Converts the exit direction of a depot to trackdir the vehicle is going to drive to */ -static const Trackdir _roadveh_depot_exit_trackdir[DIAGDIR_END] = { - TRACKDIR_X_NE, TRACKDIR_Y_SE, TRACKDIR_X_SW, TRACKDIR_Y_NW -}; - - /** * Check whether a roadvehicle is a bus * @return true if bus @@ -935,7 +921,7 @@ static Trackdir RoadFindPathToDest(RoadVehicle *v, TileIndex tile, DiagDirection */ /* Remove tracks unreachable from the enter dir */ - trackdirs &= _road_enter_dir_to_reachable_trackdirs[enterdir]; + trackdirs &= DiagdirReachesTrackdirs(enterdir); if (trackdirs == TRACKDIR_BIT_NONE) { /* No reachable tracks, so we'll reverse */ return_track(_road_reverse_table[enterdir]); @@ -1001,7 +987,7 @@ static bool RoadVehLeaveDepot(RoadVehicle *v, bool first) DiagDirection dir = GetRoadDepotDirection(v->tile); v->direction = DiagDirToDir(dir); - Trackdir tdir = _roadveh_depot_exit_trackdir[dir]; + Trackdir tdir = DiagDirToDiagTrackdir(dir); const RoadDriveEntry *rdp = _road_drive_data[v->roadtype][(_settings_game.vehicle.road_side << RVS_DRIVE_SIDE) + tdir]; int x = TileX(v->tile) * TILE_SIZE + (rdp[RVC_DEPOT_START_FRAME].x & 0xF); diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index b28c44d7dd..dec18c878b 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -1,4 +1,4 @@ -/* $Id: afterload.cpp 27760 2017-02-26 20:31:02Z frosch $ */ +/* $Id: afterload.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -154,7 +154,7 @@ static void ConvertTownOwner() if (GB(_m[tile].m5, 4, 2) == ROAD_TILE_CROSSING && HasBit(_m[tile].m3, 7)) { _m[tile].m3 = OWNER_TOWN; } - /* FALL THROUGH */ + FALLTHROUGH; case MP_TUNNELBRIDGE: if (_m[tile].m1 & 0x80) SetTileOwner(tile, OWNER_TOWN); diff --git a/src/saveload/company_sl.cpp b/src/saveload/company_sl.cpp index fe21860e61..2c9a9888f3 100644 --- a/src/saveload/company_sl.cpp +++ b/src/saveload/company_sl.cpp @@ -1,4 +1,4 @@ -/* $Id: company_sl.cpp 27757 2017-02-26 19:41:14Z frosch $ */ +/* $Id: company_sl.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -185,7 +185,7 @@ void AfterLoadCompanyStats() } } } - /* FALL THROUGH */ + FALLTHROUGH; case MP_OBJECT: if (GetWaterClass(tile) == WATER_CLASS_CANAL) { diff --git a/src/saveload/industry_sl.cpp b/src/saveload/industry_sl.cpp index fd32c5ae76..3474b67055 100644 --- a/src/saveload/industry_sl.cpp +++ b/src/saveload/industry_sl.cpp @@ -1,4 +1,4 @@ -/* $Id: industry_sl.cpp 27291 2015-05-21 18:59:11Z frosch $ */ +/* $Id: industry_sl.cpp 27929 2017-10-25 15:38:19Z frosch $ */ /* * This file is part of OpenTTD. @@ -57,7 +57,7 @@ static const SaveLoad _industry_desc[] = { SLEG_CONDARR(_old_ind_persistent_storage.storage, SLE_UINT32, 16, 76, 160), SLE_CONDREF(Industry, psa, REF_STORAGE, 161, SL_MAX_VERSION), - SLE_CONDVAR(Industry, random_triggers, SLE_UINT8, 82, SL_MAX_VERSION), + SLE_CONDNULL(1, 82, 196), // random_triggers SLE_CONDVAR(Industry, random, SLE_UINT16, 82, SL_MAX_VERSION), SLE_CONDNULL(32, 2, 143), // old reserved space diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 3179300902..0df7108404 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -1,4 +1,4 @@ -/* $Id: saveload.cpp 27862 2017-05-03 20:05:52Z frosch $ */ +/* $Id: saveload.cpp 27990 2018-03-14 18:05:06Z frosch $ */ /* * This file is part of OpenTTD. @@ -264,8 +264,9 @@ * 194 26881 1.5.x, 1.6.0 * 195 27572 1.6.x * 196 27778 1.7.x + * 197 27978 1.8.x */ -extern const uint16 SAVEGAME_VERSION = 196; ///< Current savegame version of OpenTTD. +extern const uint16 SAVEGAME_VERSION = 197; ///< Current savegame version of OpenTTD. SavegameType _savegame_type; ///< type of savegame we are loading FileToSaveLoad _file_to_saveload; ///< File to save or load in the openttd loop. diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 9b7a60c594..52c7f33d2b 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -1,4 +1,4 @@ -/* $Id: vehicle_sl.cpp 27668 2016-10-16 14:59:44Z frosch $ */ +/* $Id: vehicle_sl.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -375,6 +375,8 @@ void AfterLoadVehicles(bool part_of_load) FOR_ALL_VEHICLES(v) { assert(v->first != NULL); + v->trip_occupancy = CalcPercentVehicleFilled(v, NULL); + switch (v->type) { case VEH_TRAIN: { Train *t = Train::From(v); @@ -431,8 +433,8 @@ void AfterLoadVehicles(bool part_of_load) RoadVehicle *rv = RoadVehicle::From(v); rv->roadtype = HasBit(EngInfo(v->First()->engine_type)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD; rv->compatible_roadtypes = RoadTypeToRoadTypes(rv->roadtype); - /* FALL THROUGH */ } + FALLTHROUGH; case VEH_TRAIN: case VEH_SHIP: diff --git a/src/script/api/ai_changelog.hpp b/src/script/api/ai_changelog.hpp index 7fbf77f54e..28e2971be6 100644 --- a/src/script/api/ai_changelog.hpp +++ b/src/script/api/ai_changelog.hpp @@ -1,4 +1,4 @@ -/* $Id: ai_changelog.hpp 27942 2017-12-11 20:14:55Z frosch $ */ +/* $Id: ai_changelog.hpp 27996 2018-03-21 19:39:49Z frosch $ */ /* * This file is part of OpenTTD. @@ -15,6 +15,10 @@ * functions may still be available if you return an older API version * in GetAPIVersion() in info.nut. * + * \b 1.8.0 + * + * No changes + * * \b 1.7.0 - 1.7.2 * * No changes diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp index 9f8ddf4565..a769f661d1 100644 --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -1,4 +1,4 @@ -/* $Id: game_changelog.hpp 27942 2017-12-11 20:14:55Z frosch $ */ +/* $Id: game_changelog.hpp 27996 2018-03-21 19:39:49Z frosch $ */ /* * This file is part of OpenTTD. @@ -15,6 +15,10 @@ * functions may still be available if you return an older API version * in GetAPIVersion() in info.nut. * + * \b 1.8.0 + * + * No changes + * * \b 1.7.0 - 1.7.2 * * No changes diff --git a/src/script/api/script_error.cpp b/src/script/api/script_error.cpp index 5ce1e768bf..3d88c0971e 100644 --- a/src/script/api/script_error.cpp +++ b/src/script/api/script_error.cpp @@ -1,4 +1,4 @@ -/* $Id: script_error.cpp 27758 2017-02-26 19:41:30Z frosch $ */ +/* $Id: script_error.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -40,7 +40,8 @@ ScriptError::ScriptErrorMapString ScriptError::error_map_string = ScriptError::S case TEXT_TAB_SPECIAL: if (index < 0xE4) break; // Player name - /* FALL THROUGH */ + FALLTHROUGH; + case TEXT_TAB_TOWN: if (index < 0xC0) break; // Town name /* These strings are 'random' and have no meaning. diff --git a/src/settings.cpp b/src/settings.cpp index 9e421f2d47..ac8f5930cb 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1,4 +1,4 @@ -/* $Id: settings.cpp 27285 2015-05-16 12:01:19Z alberth $ */ +/* $Id: settings.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -178,7 +178,8 @@ static int ParseIntList(const char *p, int *items, int maxitems) /* Do not accept multiple commas between numbers */ if (!comma) return -1; comma = false; - /* FALL THROUGH */ + FALLTHROUGH; + case ' ': p++; break; @@ -1688,7 +1689,7 @@ static void HandleSettingDescs(IniFile *ini, SettingDescProc *proc, SettingDescP static IniFile *IniLoadConfig() { IniFile *ini = new IniFile(_list_group_names); - ini->LoadFromDisk(_config_file, BASE_DIR); + ini->LoadFromDisk(_config_file, NO_DIRECTORY); return ini; } diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 2f04ac2aee..bb4b6fd6d9 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: settings_gui.cpp 27863 2017-05-03 20:09:51Z frosch $ */ +/* $Id: settings_gui.cpp 27827 2017-03-25 12:21:17Z frosch $ */ /* * This file is part of OpenTTD. @@ -1502,6 +1502,7 @@ static SettingsContainer &GetSettingsTree() general->Add(new SettingEntry("gui.errmsg_duration")); general->Add(new SettingEntry("gui.window_snap_radius")); general->Add(new SettingEntry("gui.window_soft_limit")); + general->Add(new SettingEntry("gui.right_mouse_wnd_close")); } SettingsPage *viewports = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_VIEWPORTS)); diff --git a/src/settings_type.h b/src/settings_type.h index 41b26b5468..216f3b63af 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -1,4 +1,4 @@ -/* $Id: settings_type.h 27144 2015-02-12 20:00:23Z frosch $ */ +/* $Id: settings_type.h 27825 2017-03-24 18:55:16Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -113,6 +113,7 @@ struct GUISettings { uint8 scrollwheel_multiplier; ///< how much 'wheel' per incoming event from the OS? bool timetable_arrival_departure; ///< show arrivals and departures in vehicle timetables bool left_mouse_btn_scrolling; ///< left mouse button scroll + bool right_mouse_wnd_close; ///< close window with right click bool pause_on_newgame; ///< whether to start new games paused or not bool enable_signal_gui; ///< show the signal GUI when the signal button is pressed Year coloured_news_year; ///< when does newspaper become coloured? diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index a1817f090d..78227561a2 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: ship_cmd.cpp 27864 2017-05-03 20:13:05Z frosch $ */ +/* $Id: ship_cmd.cpp 27858 2017-04-23 09:19:32Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -318,11 +318,6 @@ void Ship::UpdateDeltaXY(Direction direction) this->z_extent = 6; } -static const TileIndexDiffC _ship_leave_depot_offs[] = { - {-1, 0}, - { 0, -1} -}; - static bool CheckShipLeaveDepot(Ship *v) { if (!v->IsChainInDepot()) return false; @@ -338,9 +333,9 @@ static bool CheckShipLeaveDepot(Ship *v) Axis axis = GetShipDepotAxis(tile); DiagDirection north_dir = ReverseDiagDir(AxisToDiagDir(axis)); - TileIndex north_neighbour = TILE_ADD(tile, ToTileIndexDiff(_ship_leave_depot_offs[axis])); + TileIndex north_neighbour = TILE_ADD(tile, TileOffsByDiagDir(north_dir)); DiagDirection south_dir = AxisToDiagDir(axis); - TileIndex south_neighbour = TILE_ADD(tile, -2 * ToTileIndexDiff(_ship_leave_depot_offs[axis])); + TileIndex south_neighbour = TILE_ADD(tile, 2 * TileOffsByDiagDir(south_dir)); TrackBits north_tracks = DiagdirReachesTracks(north_dir) & GetTileShipTrackStatus(north_neighbour); TrackBits south_tracks = DiagdirReachesTracks(south_dir) & GetTileShipTrackStatus(south_neighbour); @@ -458,27 +453,6 @@ static Track ChooseShipTrack(Ship *v, TileIndex tile, DiagDirection enterdir, Tr return track; } -static const Direction _new_vehicle_direction_table[] = { - DIR_N , DIR_NW, DIR_W , INVALID_DIR, - DIR_NE, DIR_N , DIR_SW, INVALID_DIR, - DIR_E , DIR_SE, DIR_S -}; - -static Direction ShipGetNewDirectionFromTiles(TileIndex new_tile, TileIndex old_tile) -{ - uint offs = (TileY(new_tile) - TileY(old_tile) + 1) * 4 + - TileX(new_tile) - TileX(old_tile) + 1; - assert(offs < 11 && offs != 3 && offs != 7); - return _new_vehicle_direction_table[offs]; -} - -static Direction ShipGetNewDirection(Vehicle *v, int x, int y) -{ - uint offs = (y - v->y_pos + 1) * 4 + (x - v->x_pos + 1); - assert(offs < 11 && offs != 3 && offs != 7); - return _new_vehicle_direction_table[offs]; -} - static inline TrackBits GetAvailShipTracks(TileIndex tile, DiagDirection dir) { return GetTileShipTrackStatus(tile) & DiagdirReachesTracks(dir); @@ -601,9 +575,8 @@ static void ShipController(Ship *v) /* New tile */ if (!IsValidTile(gp.new_tile)) goto reverse_direction; - dir = ShipGetNewDirectionFromTiles(gp.new_tile, gp.old_tile); - assert(dir == DIR_NE || dir == DIR_SE || dir == DIR_SW || dir == DIR_NW); - DiagDirection diagdir = DirToDiagDir(dir); + DiagDirection diagdir = DiagdirBetweenTiles(gp.old_tile, gp.new_tile); + assert(diagdir != INVALID_DIAGDIR); tracks = GetAvailShipTracks(gp.new_tile, diagdir); if (tracks == TRACK_BIT_NONE) goto reverse_direction; @@ -644,7 +617,6 @@ static void ShipController(Ship *v) } /* update image of ship, as well as delta XY */ - dir = ShipGetNewDirection(v, gp.x, gp.y); v->x_pos = gp.x; v->y_pos = gp.y; v->z_pos = GetSlopePixelZ(gp.x, gp.y); diff --git a/src/signal.cpp b/src/signal.cpp index ddae34f342..fd8b496233 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -1,4 +1,4 @@ -/* $Id: signal.cpp 26482 2014-04-23 20:13:33Z rubidium $ */ +/* $Id: signal.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -504,7 +504,8 @@ static SigSegState UpdateSignalsInBuffer(Owner owner) _tbdset.Add(tile, INVALID_DIAGDIR); // start from depot inside break; } - /* FALL THROUGH */ + FALLTHROUGH; + case MP_STATION: case MP_ROAD: if ((TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0)) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) { @@ -513,7 +514,8 @@ static SigSegState UpdateSignalsInBuffer(Owner owner) _tbdset.Add(tile + TileOffsByDiagDir(dir), ReverseDiagDir(dir)); break; } - /* FALL THROUGH */ + FALLTHROUGH; + default: /* jump to next tile */ tile = tile + TileOffsByDiagDir(dir); diff --git a/src/signs_gui.cpp b/src/signs_gui.cpp index a33a0395a6..cc3f873bb9 100644 --- a/src/signs_gui.cpp +++ b/src/signs_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: signs_gui.cpp 27381 2015-08-10 20:24:13Z michi_cc $ */ +/* $Id: signs_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -514,7 +514,7 @@ struct SignWindow : Window, SignList { case WID_QES_OK: if (RenameSign(this->cur_sign, this->name_editbox.text.buf)) break; - /* FALL THROUGH */ + FALLTHROUGH; case WID_QES_CANCEL: delete this; diff --git a/src/smallmap_gui.cpp b/src/smallmap_gui.cpp index e6e77d9822..60c1e719bd 100644 --- a/src/smallmap_gui.cpp +++ b/src/smallmap_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: smallmap_gui.cpp 27939 2017-12-11 19:20:44Z frosch $ */ +/* $Id: smallmap_gui.cpp 27905 2017-08-31 06:48:55Z adf88 $ */ /* * This file is part of OpenTTD. @@ -1241,10 +1241,12 @@ void SmallMapWindow::RebuildColourIndexIfNecessary() if (tbl->show_on_map && tbl->type == _smallmap_industry_highlight) { legend_colour = _smallmap_industry_highlight_state ? PC_WHITE : PC_BLACK; } - /* FALL THROUGH */ + FALLTHROUGH; + case SMT_LINKSTATS: SetDParam(0, tbl->legend); - /* FALL_THROUGH */ + FALLTHROUGH; + case SMT_OWNER: if (this->map_type != SMT_OWNER || tbl->company != INVALID_COMPANY) { if (this->map_type == SMT_OWNER) SetDParam(0, tbl->company); @@ -1258,7 +1260,8 @@ void SmallMapWindow::RebuildColourIndexIfNecessary() } break; } - /* FALL_THROUGH */ + FALLTHROUGH; + default: if (this->map_type == SMT_CONTOUR) SetDParam(0, tbl->height * TILE_HEIGHT_STEP); /* Anything that is not an industry or a company is using normal process */ @@ -1477,7 +1480,6 @@ int SmallMapWindow::GetPositionOnLegend(Point pt) break; case WID_SM_ENABLE_ALL: - /* FALL THROUGH */ case WID_SM_DISABLE_ALL: { LegendAndColour *tbl = NULL; switch (this->map_type) { diff --git a/src/smallmap_gui.h b/src/smallmap_gui.h index 877c4aa6da..6b3421f4b2 100644 --- a/src/smallmap_gui.h +++ b/src/smallmap_gui.h @@ -1,4 +1,4 @@ -/* $Id: smallmap_gui.h 27939 2017-12-11 19:20:44Z frosch $ */ +/* $Id: smallmap_gui.h 27905 2017-08-31 06:48:55Z adf88 $ */ /* * This file is part of OpenTTD. diff --git a/src/spritecache.cpp b/src/spritecache.cpp index 2c139674c9..381c3d337e 100644 --- a/src/spritecache.cpp +++ b/src/spritecache.cpp @@ -1,4 +1,4 @@ -/* $Id: spritecache.cpp 27732 2017-01-14 18:30:26Z frosch $ */ +/* $Id: spritecache.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -818,7 +818,7 @@ static void *HandleInvalidSpriteRequest(SpriteID sprite, SpriteType requested, S switch (requested) { case ST_NORMAL: if (sprite == SPR_IMG_QUERY) usererror("Uhm, would you be so kind not to load a NewGRF that makes the 'query' sprite a non-normal sprite?"); - /* FALL THROUGH */ + FALLTHROUGH; case ST_FONT: return GetRawSprite(SPR_IMG_QUERY, ST_NORMAL, allocator); case ST_RECOLOUR: diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index eee411bf0b..0ca20cc5f4 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: station_cmd.cpp 27686 2016-12-09 21:27:22Z frosch $ */ +/* $Id: station_cmd.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -1142,6 +1142,30 @@ CommandCost FindJoiningWaypoint(StationID existing_waypoint, StationID waypoint_ return FindJoiningBaseStation(existing_waypoint, waypoint_to_join, adjacent, ta, wp); } +/** + * Clear platform reservation during station building/removing. + * @param v vehicle which holds reservation + */ +static void FreeTrainReservation(Train *v) +{ + FreeTrainTrackReservation(v); + if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(v->GetVehicleTrackdir()), false); + v = v->Last(); + if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), false); +} + +/** + * Restore platform reservation during station building/removing. + * @param v vehicle which held reservation + */ +static void RestoreTrainReservation(Train *v) +{ + if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(v->GetVehicleTrackdir()), true); + TryPathReserve(v, true, true); + v = v->Last(); + if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), true); +} + /** * Build rail station * @param tile_org northern most position of station dragging/placement @@ -1281,11 +1305,8 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 /* Check for trains having a reservation for this tile. */ Train *v = GetTrainForReservation(tile, AxisToTrack(GetRailStationAxis(tile))); if (v != NULL) { - FreeTrainTrackReservation(v); *affected_vehicles.Append() = v; - if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(v->GetVehicleTrackdir()), false); - for (; v->Next() != NULL; v = v->Next()) { } - if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), false); + FreeTrainReservation(v); } } @@ -1336,11 +1357,7 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 for (uint i = 0; i < affected_vehicles.Length(); ++i) { /* Restore reservations of trains. */ - Train *v = affected_vehicles[i]; - if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(v->GetVehicleTrackdir()), true); - TryPathReserve(v, true, true); - for (; v->Next() != NULL; v = v->Next()) { } - if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), true); + RestoreTrainReservation(affected_vehicles[i]); } /* Check whether we need to expand the reservation of trains already on the station. */ @@ -1504,14 +1521,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector &affected if (HasStationReservation(tile)) { v = GetTrainForReservation(tile, track); - if (v != NULL) { - /* Free train reservation. */ - FreeTrainTrackReservation(v); - if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(v->GetVehicleTrackdir()), false); - Vehicle *temp = v; - for (; temp->Next() != NULL; temp = temp->Next()) { } - if (IsRailStationTile(temp->tile)) SetRailStationPlatformReservation(temp->tile, TrackdirToExitdir(ReverseTrackdir(temp->GetVehicleTrackdir())), false); - } + if (v != NULL) FreeTrainReservation(v); } bool build_rail = keep_rail && !IsStationTileBlocked(tile); @@ -1531,13 +1541,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector &affected affected_stations.Include(st); - if (v != NULL) { - /* Restore station reservation. */ - if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(v->GetVehicleTrackdir()), true); - TryPathReserve(v, true, true); - for (; v->Next() != NULL; v = v->Next()) { } - if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), true); - } + if (v != NULL) RestoreTrainReservation(v); } } @@ -3087,7 +3091,8 @@ static void TileLoop_Station(TileIndex tile) case STATION_DOCK: if (!IsTileFlat(tile)) break; // only handle water part - /* FALL THROUGH */ + FALLTHROUGH; + case STATION_OILRIG: //(station part) case STATION_BUOY: TileLoop_Water(tile); diff --git a/src/station_gui.cpp b/src/station_gui.cpp index faa80aea60..cbe3c41d15 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: station_gui.cpp 27381 2015-08-10 20:24:13Z michi_cc $ */ +/* $Id: station_gui.cpp 27894 2017-08-20 07:11:08Z alberth $ */ /* * This file is part of OpenTTD. @@ -1820,7 +1820,7 @@ struct StationViewWindow : public Window { if (st->town->exclusive_counter > 0) { SetDParam(0, st->town->exclusivity); - y = DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, r.bottom, st->town->exclusivity == st->owner ? STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF : STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY); + y = DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, r.bottom, st->town->exclusivity == st->owner ? STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF : STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY); y += WD_PAR_VSEP_WIDE; } diff --git a/src/stdafx.h b/src/stdafx.h index dfe7561c70..0a0f41cd27 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -1,4 +1,4 @@ -/* $Id: stdafx.h 27380 2015-08-10 20:21:29Z michi_cc $ */ +/* $Id: stdafx.h 27916 2017-09-24 13:35:27Z frosch $ */ /* * This file is part of OpenTTD. @@ -156,6 +156,17 @@ #else #define FINAL #endif + + /* Use fallthrough attribute where supported */ + #if __GNUC__ >= 7 + #if __cplusplus > 201402L // C++17 + #define FALLTHROUGH [[fallthrough]] + #else + #define FALLTHROUGH __attribute__((fallthrough)) + #endif + #else + #define FALLTHROUGH + #endif #endif /* __GNUC__ */ #if defined(__WATCOMC__) @@ -164,6 +175,7 @@ #define GCC_PACK #define WARN_FORMAT(string, args) #define FINAL + #define FALLTHROUGH #include #endif /* __WATCOMC__ */ @@ -235,6 +247,13 @@ #define WARN_FORMAT(string, args) #define FINAL sealed + /* fallthrough attribute, VS 2017 */ + #if (_MSC_VER >= 1910) + #define FALLTHROUGH [[fallthrough]] + #else + #define FALLTHROUGH + #endif + #if defined(WINCE) int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap); #endif @@ -364,7 +383,7 @@ typedef unsigned char byte; /* Compile time assertions. Prefer c++0x static_assert(). * Older compilers cannot evaluate some expressions at compile time, * typically when templates are involved, try assert_tcompile() in those cases. */ -#if defined(__STDCXX_VERSION__) || defined(__GXX_EXPERIMENTAL_CXX0X__) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(static_assert) +#if defined(__STDCXX_VERSION__) || defined(__GXX_EXPERIMENTAL_CXX0X__) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(static_assert) || (defined(_MSC_VER) && _MSC_VER >= 1600) /* __STDCXX_VERSION__ is c++0x feature macro, __GXX_EXPERIMENTAL_CXX0X__ is used by gcc, __GXX_EXPERIMENTAL_CPP0X__ by icc */ #define assert_compile(expr) static_assert(expr, #expr ) #define assert_tcompile(expr) assert_compile(expr) diff --git a/src/table/airport_defaults.h b/src/table/airport_defaults.h index 1df5dbd3f4..13437d22af 100644 --- a/src/table/airport_defaults.h +++ b/src/table/airport_defaults.h @@ -1,4 +1,4 @@ -/* $Id: airport_defaults.h 23415 2011-12-03 23:40:46Z michi_cc $ */ +/* $Id: airport_defaults.h 27908 2017-08-31 06:55:38Z adf88 $ */ /* * This file is part of OpenTTD. @@ -28,7 +28,7 @@ #define MKEND {{-0x80, 0}, 0} /** Tiles for Country Airfield (small) */ -static AirportTileTable _tile_table_country_0[] = { +static const AirportTileTable _tile_table_country_0[] = { MK(0, 0, APT_SMALL_BUILDING_1), MK(1, 0, APT_SMALL_BUILDING_2), MK(2, 0, APT_SMALL_BUILDING_3), @@ -44,12 +44,12 @@ static AirportTileTable _tile_table_country_0[] = { MKEND }; -static AirportTileTable *_tile_table_country[] = { +static const AirportTileTable * const _tile_table_country[] = { _tile_table_country_0, }; /** Tiles for Commuter Airfield (small) */ -static AirportTileTable _tile_table_commuter_0[] = { +static const AirportTileTable _tile_table_commuter_0[] = { MK(0, 0, APT_TOWER), MK(1, 0, APT_BUILDING_3), MK(2, 0, APT_HELIPAD_2_FENCE_NW), @@ -73,12 +73,12 @@ static AirportTileTable _tile_table_commuter_0[] = { MKEND }; -static AirportTileTable *_tile_table_commuter[] = { +static const AirportTileTable * const _tile_table_commuter[] = { _tile_table_commuter_0, }; /** Tiles for City Airport (large) */ -static AirportTileTable _tile_table_city_0[] = { +static const AirportTileTable _tile_table_city_0[] = { MK(0, 0, APT_BUILDING_1), MK(1, 0, APT_APRON_FENCE_NW), MK(2, 0, APT_STAND_1), @@ -118,12 +118,12 @@ static AirportTileTable _tile_table_city_0[] = { MKEND }; -static AirportTileTable *_tile_table_city[] = { +static const AirportTileTable * const _tile_table_city[] = { _tile_table_city_0, }; /** Tiles for Metropolitain Airport (large) - 2 runways */ -static AirportTileTable _tile_table_metropolitan_0[] = { +static const AirportTileTable _tile_table_metropolitan_0[] = { MK(0, 0, APT_BUILDING_1), MK(1, 0, APT_APRON_FENCE_NW), MK(2, 0, APT_STAND_1), @@ -163,12 +163,12 @@ static AirportTileTable _tile_table_metropolitan_0[] = { MKEND }; -static AirportTileTable *_tile_table_metropolitan[] = { +static const AirportTileTable * const _tile_table_metropolitan[] = { _tile_table_metropolitan_0, }; /** Tiles for International Airport (large) - 2 runways */ -static AirportTileTable _tile_table_international_0[] = { +static const AirportTileTable _tile_table_international_0[] = { MK(0, 0, APT_RUNWAY_END_FENCE_NW), MK(1, 0, APT_RUNWAY_FENCE_NW), MK(2, 0, APT_RUNWAY_FENCE_NW), @@ -221,12 +221,12 @@ static AirportTileTable _tile_table_international_0[] = { MKEND }; -static AirportTileTable *_tile_table_international[] = { +static const AirportTileTable * const _tile_table_international[] = { _tile_table_international_0, }; /** Tiles for International Airport (large) - 2 runways */ -static AirportTileTable _tile_table_intercontinental_0[] = { +static const AirportTileTable _tile_table_intercontinental_0[] = { MK(0, 0, APT_RADAR_FENCE_NE), MK(1, 0, APT_RUNWAY_END_FENCE_NE_NW), MK(2, 0, APT_RUNWAY_FENCE_NW), @@ -329,22 +329,22 @@ static AirportTileTable _tile_table_intercontinental_0[] = { MKEND }; -static AirportTileTable *_tile_table_intercontinental[] = { +static const AirportTileTable * const _tile_table_intercontinental[] = { _tile_table_intercontinental_0, }; /** Tiles for Heliport */ -static AirportTileTable _tile_table_heliport_0[] = { +static const AirportTileTable _tile_table_heliport_0[] = { MK(0, 0, APT_HELIPORT), MKEND }; -static AirportTileTable *_tile_table_heliport[] = { +static const AirportTileTable * const _tile_table_heliport[] = { _tile_table_heliport_0, }; /** Tiles for Helidepot */ -static AirportTileTable _tile_table_helidepot_0[] = { +static const AirportTileTable _tile_table_helidepot_0[] = { MK(0, 0, APT_LOW_BUILDING_FENCE_N), MK(1, 0, APT_DEPOT_SE), MK(0, 1, APT_HELIPAD_2_FENCE_NE_SE), @@ -352,12 +352,12 @@ static AirportTileTable _tile_table_helidepot_0[] = { MKEND }; -static AirportTileTable *_tile_table_helidepot[] = { +static const AirportTileTable * const _tile_table_helidepot[] = { _tile_table_helidepot_0, }; /** Tiles for Helistation */ -static AirportTileTable _tile_table_helistation_0[] = { +static const AirportTileTable _tile_table_helistation_0[] = { MK(0, 0, APT_DEPOT_SE), MK(1, 0, APT_LOW_BUILDING_FENCE_NW), MK(2, 0, APT_HELIPAD_3_FENCE_NW), @@ -369,11 +369,11 @@ static AirportTileTable _tile_table_helistation_0[] = { MKEND }; -static AirportTileTable *_tile_table_helistation[] = { +static const AirportTileTable * const _tile_table_helistation[] = { _tile_table_helistation_0, }; -static Direction _default_airports_rotation[] = { +static const Direction _default_airports_rotation[] = { DIR_N, }; @@ -410,7 +410,7 @@ extern const AirportSpec _origin_airport_specs[] = { assert_compile(NEW_AIRPORT_OFFSET == lengthof(_origin_airport_specs)); -AirportSpec AirportSpec::dummy = AS_GENERIC(&_airportfta_dummy, NULL, _default_airports_rotation, 0, NULL, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR, 0, ATP_TTDP_LARGE, APC_BEGIN, STR_NULL, 0, false); +const AirportSpec AirportSpec::dummy = AS_GENERIC(&_airportfta_dummy, NULL, _default_airports_rotation, 0, NULL, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR, 0, ATP_TTDP_LARGE, APC_BEGIN, STR_NULL, 0, false); #undef AS #undef AS_ND diff --git a/src/table/elrail_data.h b/src/table/elrail_data.h index 86f5b0ca30..9c71f94c7d 100644 --- a/src/table/elrail_data.h +++ b/src/table/elrail_data.h @@ -1,4 +1,4 @@ -/* $Id: elrail_data.h 27676 2016-11-05 11:53:03Z frosch $ */ +/* $Id: elrail_data.h 27972 2018-03-05 21:24:48Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -310,10 +310,10 @@ enum WireSpriteOffset { WSO_X_NE_UP, WSO_Y_NW_DOWN, - WSO_ENTRANCE_NE, - WSO_ENTRANCE_SE, WSO_ENTRANCE_SW, WSO_ENTRANCE_NW, + WSO_ENTRANCE_NE, + WSO_ENTRANCE_SE, }; struct SortableSpriteStruct { @@ -400,10 +400,10 @@ static const SortableSpriteStruct RailCatenarySpriteData_Depot[] = { }; static const SortableSpriteStruct RailCatenarySpriteData_Tunnel[] = { - { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE tunnel exit - { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE tunnel exit - { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW tunnel exit - { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW tunnel exit + { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE tunnel (SW facing exit) + { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE tunnel (NW facing exit) + { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW tunnel (NE facing exit) + { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW tunnel (SE facing exit) }; diff --git a/src/table/settings.ini b/src/table/settings.ini index 960e5c0a61..a39a3e4131 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -1,4 +1,4 @@ -; $Id: settings.ini 27760 2017-02-26 20:31:02Z frosch $ +; $Id: settings.ini 27978 2018-03-11 12:11:09Z frosch $ ; ; 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. @@ -2189,7 +2189,7 @@ cat = SC_BASIC base = GameSettings var = game_creation.variety type = SLE_UINT8 -flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +from = 197 guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 0 min = 0 @@ -2583,6 +2583,14 @@ str = STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING strhelp = STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT cat = SC_BASIC +[SDTC_BOOL] +var = gui.right_mouse_wnd_close +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE +strhelp = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT +cat = SC_BASIC + [SDTC_BOOL] var = gui.measure_tooltip flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC diff --git a/src/terraform_gui.cpp b/src/terraform_gui.cpp index c5bd25b20a..6b011b40b4 100644 --- a/src/terraform_gui.cpp +++ b/src/terraform_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: terraform_gui.cpp 27571 2016-05-22 10:07:48Z frosch $ */ +/* $Id: terraform_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -80,12 +80,14 @@ static void GenerateRockyArea(TileIndex end, TileIndex start) switch (GetTileType(tile)) { case MP_TREES: if (GetTreeGround(tile) == TREE_GROUND_SHORE) continue; - /* FALL THROUGH */ + FALLTHROUGH; + case MP_CLEAR: MakeClear(tile, CLEAR_ROCKS, 3); break; - default: continue; + default: + continue; } MarkTileDirtyByTile(tile); success = true; diff --git a/src/tile_type.h b/src/tile_type.h index 671f89e540..c49496f627 100644 --- a/src/tile_type.h +++ b/src/tile_type.h @@ -1,4 +1,4 @@ -/* $Id: tile_type.h 27148 2015-02-14 12:53:07Z frosch $ */ +/* $Id: tile_type.h 27987 2018-03-11 13:25:26Z frosch $ */ /* * This file is part of OpenTTD. @@ -18,6 +18,8 @@ static const uint TILE_PIXELS = 32; ///< Pixel distan static const uint TILE_HEIGHT = 8; ///< Height of a height level in world coordinate AND in pixels in #ZOOM_LVL_BASE. static const uint MAX_BUILDING_PIXELS = 200; ///< Maximum height of a building in pixels in #ZOOM_LVL_BASE. (Also applies to "bridge buildings" on the bridge floor.) +static const int MAX_VEHICLE_PIXEL_X = 192; ///< Maximum width of a vehicle in pixels in #ZOOM_LVL_BASE. +static const int MAX_VEHICLE_PIXEL_Y = 96; ///< Maximum height of a vehicle in pixels in #ZOOM_LVL_BASE. static const uint MAX_TILE_HEIGHT = 255; ///< Maximum allowed tile height diff --git a/src/timetable_gui.cpp b/src/timetable_gui.cpp index b0097ea1c0..5e45a5f112 100644 --- a/src/timetable_gui.cpp +++ b/src/timetable_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: timetable_gui.cpp 26639 2014-06-10 16:29:03Z frosch $ */ +/* $Id: timetable_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -197,7 +197,8 @@ struct TimetableWindow : Window { this->deparr_time_width = GetStringBoundingBox(STR_JUST_DATE_TINY).width; this->deparr_abbr_width = max(GetStringBoundingBox(STR_TIMETABLE_ARRIVAL_ABBREVIATION).width, GetStringBoundingBox(STR_TIMETABLE_DEPARTURE_ABBREVIATION).width); size->width = WD_FRAMERECT_LEFT + this->deparr_abbr_width + 10 + this->deparr_time_width + WD_FRAMERECT_RIGHT; - /* FALL THROUGH */ + FALLTHROUGH; + case WID_VT_ARRIVAL_DEPARTURE_SELECTION: case WID_VT_TIMETABLE_PANEL: resize->height = FONT_HEIGHT_NORMAL; diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index e26045ed65..b3d62923e1 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: town_cmd.cpp 27739 2017-01-22 13:13:15Z frosch $ */ +/* $Id: town_cmd.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -1244,7 +1244,7 @@ static void GrowTownInTile(TileIndex *tile_ptr, RoadBits cur_rb, DiagDirection t case TL_3X3_GRID: // Use 2x2 grid afterwards! GrowTownWithExtraHouse(t1, TileAddByDiagDir(house_tile, target_dir)); - /* FALL THROUGH */ + FALLTHROUGH; case TL_2X2_GRID: rcmd = GetTownRoadGridElement(t1, tile, target_dir); @@ -1253,7 +1253,7 @@ static void GrowTownInTile(TileIndex *tile_ptr, RoadBits cur_rb, DiagDirection t case TL_BETTER_ROADS: // Use original afterwards! GrowTownWithExtraHouse(t1, TileAddByDiagDir(house_tile, target_dir)); - /* FALL THROUGH */ + FALLTHROUGH; case TL_ORIGINAL: /* Allow a house at the edge. 60% chance or @@ -3259,7 +3259,7 @@ Town *ClosestTownFromTile(TileIndex tile, uint threshold) return town; } - /* FALL THROUGH */ + FALLTHROUGH; case MP_HOUSE: return Town::GetByTile(tile); diff --git a/src/town_gui.cpp b/src/town_gui.cpp index b97cde092c..2bd8286dd3 100644 --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: town_gui.cpp 27577 2016-05-22 10:52:02Z frosch $ */ +/* $Id: town_gui.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -267,9 +267,10 @@ public: this->sel_index = y; this->SetDirty(); } - /* FALL THROUGH, when double-clicking. */ + /* When double-clicking, continue */ if (click_count == 1 || y < 0) break; } + FALLTHROUGH; case WID_TA_EXECUTE: DoCommandP(this->town->xy, this->window_number, this->sel_index, CMD_DO_TOWN_ACTION | CMD_MSG(STR_ERROR_CAN_T_DO_THIS)); diff --git a/src/track_func.h b/src/track_func.h index 522fff77d5..43ba93f6bf 100644 --- a/src/track_func.h +++ b/src/track_func.h @@ -1,4 +1,4 @@ -/* $Id: track_func.h 26105 2013-11-25 13:16:06Z rubidium $ */ +/* $Id: track_func.h 27808 2017-03-19 22:30:47Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -594,7 +594,7 @@ static inline TrackdirBits TrackdirReachesTrackdirs(Trackdir trackdir) static inline TrackdirBits TrackdirCrossesTrackdirs(Trackdir trackdir) { assert(IsValidTrackdirForRoadVehicle(trackdir)); - extern const TrackdirBits _track_crosses_trackdirs[TRACKDIR_END]; + extern const TrackdirBits _track_crosses_trackdirs[TRACK_END]; return _track_crosses_trackdirs[TrackdirToTrack(trackdir)]; } diff --git a/src/track_type.h b/src/track_type.h index 99f615395d..0cb5fd1e2b 100644 --- a/src/track_type.h +++ b/src/track_type.h @@ -1,4 +1,4 @@ -/* $Id: track_type.h 23595 2011-12-19 17:48:04Z rubidium $ */ +/* $Id: track_type.h 27833 2017-03-28 21:44:40Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -104,22 +104,22 @@ typedef TinyEnumT TrackdirByte; * direction (corresponding to the Track enum) and 8-13 in the other direction. */ enum TrackdirBits { - TRACKDIR_BIT_NONE = 0x0000, ///< No track build - TRACKDIR_BIT_X_NE = 0x0001, ///< Track x-axis, direction north-east - TRACKDIR_BIT_Y_SE = 0x0002, ///< Track y-axis, direction south-east - TRACKDIR_BIT_UPPER_E = 0x0004, ///< Track upper, direction east - TRACKDIR_BIT_LOWER_E = 0x0008, ///< Track lower, direction east - TRACKDIR_BIT_LEFT_S = 0x0010, ///< Track left, direction south - TRACKDIR_BIT_RIGHT_S = 0x0020, ///< Track right, direction south + TRACKDIR_BIT_NONE = 0U, ///< No track build + TRACKDIR_BIT_X_NE = 1U << TRACKDIR_X_NE, ///< Track x-axis, direction north-east + TRACKDIR_BIT_Y_SE = 1U << TRACKDIR_Y_SE, ///< Track y-axis, direction south-east + TRACKDIR_BIT_UPPER_E = 1U << TRACKDIR_UPPER_E, ///< Track upper, direction east + TRACKDIR_BIT_LOWER_E = 1U << TRACKDIR_LOWER_E, ///< Track lower, direction east + TRACKDIR_BIT_LEFT_S = 1U << TRACKDIR_LEFT_S, ///< Track left, direction south + TRACKDIR_BIT_RIGHT_S = 1U << TRACKDIR_RIGHT_S, ///< Track right, direction south /* Again, note the two missing values here. This enables trackdir -> track conversion by doing (trackdir & 0xFF) */ - TRACKDIR_BIT_X_SW = 0x0100, ///< Track x-axis, direction south-west - TRACKDIR_BIT_Y_NW = 0x0200, ///< Track y-axis, direction north-west - TRACKDIR_BIT_UPPER_W = 0x0400, ///< Track upper, direction west - TRACKDIR_BIT_LOWER_W = 0x0800, ///< Track lower, direction west - TRACKDIR_BIT_LEFT_N = 0x1000, ///< Track left, direction north - TRACKDIR_BIT_RIGHT_N = 0x2000, ///< Track right, direction north - TRACKDIR_BIT_MASK = 0x3F3F, ///< Bitmask for bit-operations - INVALID_TRACKDIR_BIT = 0xFFFF, ///< Flag for an invalid trackdirbit value + TRACKDIR_BIT_X_SW = 1U << TRACKDIR_X_SW, ///< Track x-axis, direction south-west + TRACKDIR_BIT_Y_NW = 1U << TRACKDIR_Y_NW, ///< Track y-axis, direction north-west + TRACKDIR_BIT_UPPER_W = 1U << TRACKDIR_UPPER_W, ///< Track upper, direction west + TRACKDIR_BIT_LOWER_W = 1U << TRACKDIR_LOWER_W, ///< Track lower, direction west + TRACKDIR_BIT_LEFT_N = 1U << TRACKDIR_LEFT_N, ///< Track left, direction north + TRACKDIR_BIT_RIGHT_N = 1U << TRACKDIR_RIGHT_N, ///< Track right, direction north + TRACKDIR_BIT_MASK = 0x3F3F, ///< Bitmask for bit-operations + INVALID_TRACKDIR_BIT = 0xFFFF, ///< Flag for an invalid trackdirbit value }; DECLARE_ENUM_AS_BIT_SET(TrackdirBits) typedef SimpleTinyEnumT TrackdirBitsShort; diff --git a/src/train.h b/src/train.h index 78f76ef227..e2066fbd97 100644 --- a/src/train.h +++ b/src/train.h @@ -1,4 +1,4 @@ -/* $Id: train.h 27666 2016-10-16 14:57:56Z frosch $ */ +/* $Id: train.h 27811 2017-03-20 17:49:44Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -61,7 +61,7 @@ byte FreightWagonMult(CargoID cargo); void CheckTrainsLengths(); -void FreeTrainTrackReservation(const Train *v, TileIndex origin = INVALID_TILE, Trackdir orig_td = INVALID_TRACKDIR); +void FreeTrainTrackReservation(const Train *v); bool TryPathReserve(Train *v, bool mark_as_stuck = false, bool first_tile_okay = false); int GetTrainStopLocation(StationID station_id, TileIndex tile, const Train *v, int *station_ahead, int *station_length); diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 34b374446b..a3777eaacd 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: train_cmd.cpp 27667 2016-10-16 14:58:38Z frosch $ */ +/* $Id: train_cmd.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -1700,8 +1700,8 @@ void UpdateLevelCrossing(TileIndex tile, bool sound) { assert(IsLevelCrossingTile(tile)); - /* train on crossing || train approaching crossing || reserved */ - bool new_state = HasVehicleOnPos(tile, NULL, &TrainOnTileEnum) || TrainApproachingCrossing(tile) || HasCrossingReservation(tile); + /* reserved || train on crossing || train approaching crossing */ + bool new_state = HasCrossingReservation(tile) || HasVehicleOnPos(tile, NULL, &TrainOnTileEnum) || TrainApproachingCrossing(tile); if (new_state != IsCrossingBarred(tile)) { if (new_state && sound) { @@ -2254,16 +2254,14 @@ static void ClearPathReservation(const Train *v, TileIndex tile, Trackdir track_ /** * Free the reserved path in front of a vehicle. * @param v %Train owning the reserved path. - * @param origin %Tile to start clearing (if #INVALID_TILE, use the current tile of \a v). - * @param orig_td Track direction (if #INVALID_TRACKDIR, use the track direction of \a v). */ -void FreeTrainTrackReservation(const Train *v, TileIndex origin, Trackdir orig_td) +void FreeTrainTrackReservation(const Train *v) { assert(v->IsFrontEngine()); - TileIndex tile = origin != INVALID_TILE ? origin : v->tile; - Trackdir td = orig_td != INVALID_TRACKDIR ? orig_td : v->GetVehicleTrackdir(); - bool free_tile = tile != v->tile || !(IsRailStationTile(v->tile) || IsTileType(v->tile, MP_TUNNELBRIDGE)); + TileIndex tile = v->tile; + Trackdir td = v->GetVehicleTrackdir(); + bool free_tile = !(IsRailStationTile(v->tile) || IsTileType(v->tile, MP_TUNNELBRIDGE)); StationID station_id = IsRailStationTile(v->tile) ? GetStationIndex(v->tile) : INVALID_STATION; /* Can't be holding a reservation if we enter a depot. */ @@ -2504,6 +2502,7 @@ public: case OT_GOTO_DEPOT: /* Skip service in depot orders when the train doesn't need service. */ if ((order->GetDepotOrderType() & ODTFB_SERVICE) && !this->v->NeedsServicing()) break; + FALLTHROUGH; case OT_GOTO_STATION: case OT_GOTO_WAYPOINT: this->v->current_order = *order; @@ -3610,7 +3609,7 @@ static bool TrainApproachingLineEnd(Train *v, bool signal, bool reverse) * for other directions, it will be 1, 3, 5, ..., 15 */ switch (v->direction) { case DIR_N : x = ~x + ~y + 25; break; - case DIR_NW: x = y; // FALL THROUGH + case DIR_NW: x = y; FALLTHROUGH; case DIR_NE: x = ~x + 16; break; case DIR_E : x = ~x + y + 9; break; case DIR_SE: x = y; break; diff --git a/src/train_gui.cpp b/src/train_gui.cpp index 18c5649622..ce88bff086 100644 --- a/src/train_gui.cpp +++ b/src/train_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: train_gui.cpp 27940 2017-12-11 19:24:46Z frosch $ */ +/* $Id: train_gui.cpp 27936 2017-12-10 13:45:53Z frosch $ */ /* * This file is part of OpenTTD. diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp index 132fa2aaa6..46e45c5291 100644 --- a/src/tree_cmd.cpp +++ b/src/tree_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: tree_cmd.cpp 27406 2015-09-30 17:28:58Z frosch $ */ +/* $Id: tree_cmd.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -375,7 +375,8 @@ CommandCost CmdPlantTree(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 msg = STR_ERROR_CAN_T_BUILD_ON_WATER; continue; } - /* FALL THROUGH */ + FALLTHROUGH; + case MP_CLEAR: { if (IsBridgeAbove(tile)) { msg = STR_ERROR_SITE_UNSUITABLE; @@ -680,7 +681,7 @@ static void TileLoop_Trees(TileIndex tile) SetTreeGrowth(tile, 0); break; } - /* FALL THROUGH */ + FALLTHROUGH; case 2: { // add a neighbouring tree /* Don't plant extra trees if that's not allowed. */ diff --git a/src/vehicle.cpp b/src/vehicle.cpp index d3edff9ca9..69684bb90b 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1,4 +1,4 @@ -/* $Id: vehicle.cpp 27939 2017-12-11 19:20:44Z frosch $ */ +/* $Id: vehicle.cpp 27986 2018-03-11 13:23:26Z frosch $ */ /* * This file is part of OpenTTD. @@ -57,7 +57,30 @@ #include "safeguards.h" -#define GEN_HASH(x, y) ((GB((y), 6 + ZOOM_LVL_SHIFT, 6) << 6) + GB((x), 7 + ZOOM_LVL_SHIFT, 6)) +/* Number of bits in the hash to use from each vehicle coord */ +static const uint GEN_HASHX_BITS = 6; +static const uint GEN_HASHY_BITS = 6; + +/* Size of each hash bucket */ +static const uint GEN_HASHX_BUCKET_BITS = 7; +static const uint GEN_HASHY_BUCKET_BITS = 6; + +/* Compute hash for vehicle coord */ +#define GEN_HASHX(x) GB((x), GEN_HASHX_BUCKET_BITS + ZOOM_LVL_SHIFT, GEN_HASHX_BITS) +#define GEN_HASHY(y) (GB((y), GEN_HASHY_BUCKET_BITS + ZOOM_LVL_SHIFT, GEN_HASHY_BITS) << GEN_HASHX_BITS) +#define GEN_HASH(x, y) (GEN_HASHY(y) + GEN_HASHX(x)) + +/* Maximum size until hash repeats */ +static const int GEN_HASHX_SIZE = 1 << (GEN_HASHX_BUCKET_BITS + GEN_HASHX_BITS + ZOOM_LVL_SHIFT); +static const int GEN_HASHY_SIZE = 1 << (GEN_HASHY_BUCKET_BITS + GEN_HASHY_BITS + ZOOM_LVL_SHIFT); + +/* Increments to reach next bucket in hash table */ +static const int GEN_HASHX_INC = 1; +static const int GEN_HASHY_INC = 1 << GEN_HASHX_BITS; + +/* Mask to wrap-around buckets */ +static const uint GEN_HASHX_MASK = (1 << GEN_HASHX_BITS) - 1; +static const uint GEN_HASHY_MASK = ((1 << GEN_HASHY_BITS) - 1) << GEN_HASHX_BITS; VehicleID _new_vehicle_id; uint16 _returned_refit_capacity; ///< Stores the capacity after a refit operation. @@ -618,7 +641,7 @@ static void UpdateVehicleTileHash(Vehicle *v, bool remove) v->hash_tile_current = new_hash; } -static Vehicle *_vehicle_viewport_hash[0x1000]; +static Vehicle *_vehicle_viewport_hash[1 << (GEN_HASHX_BITS + GEN_HASHY_BITS)]; static void UpdateVehicleViewportHash(Vehicle *v, int x, int y) { @@ -1088,26 +1111,26 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) /* The hash area to scan */ int xl, xu, yl, yu; - if (dpi->width + (70 * ZOOM_LVL_BASE) < (1 << (7 + 6 + ZOOM_LVL_SHIFT))) { - xl = GB(l - (70 * ZOOM_LVL_BASE), 7 + ZOOM_LVL_SHIFT, 6); - xu = GB(r, 7 + ZOOM_LVL_SHIFT, 6); + if (dpi->width + (MAX_VEHICLE_PIXEL_X * ZOOM_LVL_BASE) < GEN_HASHX_SIZE) { + xl = GEN_HASHX(l - MAX_VEHICLE_PIXEL_X * ZOOM_LVL_BASE); + xu = GEN_HASHX(r); } else { /* scan whole hash row */ xl = 0; - xu = 0x3F; + xu = GEN_HASHX_MASK; } - if (dpi->height + (70 * ZOOM_LVL_BASE) < (1 << (6 + 6 + ZOOM_LVL_SHIFT))) { - yl = GB(t - (70 * ZOOM_LVL_BASE), 6 + ZOOM_LVL_SHIFT, 6) << 6; - yu = GB(b, 6 + ZOOM_LVL_SHIFT, 6) << 6; + if (dpi->height + (MAX_VEHICLE_PIXEL_Y * ZOOM_LVL_BASE) < GEN_HASHY_SIZE) { + yl = GEN_HASHY(t - MAX_VEHICLE_PIXEL_Y * ZOOM_LVL_BASE); + yu = GEN_HASHY(b); } else { /* scan whole column */ yl = 0; - yu = 0x3F << 6; + yu = GEN_HASHY_MASK; } - for (int y = yl;; y = (y + (1 << 6)) & (0x3F << 6)) { - for (int x = xl;; x = (x + 1) & 0x3F) { + for (int y = yl;; y = (y + GEN_HASHY_INC) & GEN_HASHY_MASK) { + for (int x = xl;; x = (x + GEN_HASHX_INC) & GEN_HASHX_MASK) { const Vehicle *v = _vehicle_viewport_hash[x + y]; // already masked & 0xFFF while (v != NULL) { @@ -1269,7 +1292,7 @@ bool Vehicle::HandleBreakdown() SetWindowDirty(WC_VEHICLE_VIEW, this->index); SetWindowDirty(WC_VEHICLE_DETAILS, this->index); - /* FALL THROUGH */ + FALLTHROUGH; case 1: /* Aircraft breakdowns end only when arriving at the airport */ if (this->type == VEH_AIRCRAFT) return false; @@ -2160,6 +2183,7 @@ void Vehicle::LeaveStation() st->loading_vehicles.remove(this); HideFillingPercent(&this->fill_percent_te_id); + trip_occupancy = CalcPercentVehicleFilled(this, NULL); if (this->type == VEH_TRAIN && !(this->vehstatus & VS_CRASHED)) { /* Trigger station animation (trains only) */ diff --git a/src/vehicle_base.h b/src/vehicle_base.h index f65f2a4df5..9ed6596442 100644 --- a/src/vehicle_base.h +++ b/src/vehicle_base.h @@ -1,4 +1,4 @@ -/* $Id: vehicle_base.h 27668 2016-10-16 14:59:44Z frosch $ */ +/* $Id: vehicle_base.h 27822 2017-03-24 07:33:31Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -308,6 +308,7 @@ public: uint16 refit_cap; ///< Capacity left over from before last refit. VehicleCargoList cargo; ///< The cargo this vehicle is carrying uint16 cargo_age_counter; ///< Ticks till cargo is aged next. + int8 trip_occupancy; ///< NOSAVE: Occupancy of vehicle of the current trip (updated after leaving a station). byte day_counter; ///< Increased by one for each day byte tick_counter; ///< Increased by one for each tick diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index fd1eaadf6b..79edb8161e 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -1,4 +1,4 @@ -/* $Id: vehicle_gui.cpp 27939 2017-12-11 19:20:44Z frosch $ */ +/* $Id: vehicle_gui.cpp 27895 2017-08-20 08:28:05Z alberth $ */ /* * This file is part of OpenTTD. @@ -817,8 +817,8 @@ struct RefitWindow : public Window { Vehicle *v = Vehicle::Get(this->window_number); this->selected_vehicle = v->index; this->num_vehicles = UINT8_MAX; - /* FALL THROUGH */ } + FALLTHROUGH; case 2: { // The vehicle selection has changed; rebuild the entire list. if (!gui_scope) break; @@ -843,8 +843,8 @@ struct RefitWindow : public Window { this->information_width = max_width; this->ReInit(); } - /* FALL THROUGH */ } + FALLTHROUGH; case 1: // A new cargo has been selected. if (!gui_scope) break; @@ -905,8 +905,8 @@ struct RefitWindow : public Window { if (_ctrl_pressed) this->num_vehicles = UINT8_MAX; break; } - /* FALL THROUGH */ } + FALLTHROUGH; default: /* Clear the selection. */ @@ -940,8 +940,8 @@ struct RefitWindow : public Window { this->InvalidateData(1); if (click_count == 1) break; - /* FALL THROUGH */ } + FALLTHROUGH; case WID_VR_REFIT: // refit button if (this->cargo != NULL) { @@ -2069,9 +2069,14 @@ struct VehicleDetailsWindow : Window { } } else { SetDParam(0, v->GetDisplayMaxSpeed()); - if (v->type == VEH_AIRCRAFT && Aircraft::From(v)->GetRange() > 0) { - SetDParam(1, Aircraft::From(v)->GetRange()); - string = STR_VEHICLE_INFO_MAX_SPEED_RANGE; + if (v->type == VEH_AIRCRAFT) { + SetDParam(1, v->GetEngine()->GetAircraftTypeText()); + if (Aircraft::From(v)->GetRange() > 0) { + SetDParam(2, Aircraft::From(v)->GetRange()); + string = STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE; + } else { + string = STR_VEHICLE_INFO_MAX_SPEED_TYPE; + } } else { string = STR_VEHICLE_INFO_MAX_SPEED; } @@ -2633,8 +2638,7 @@ public: str = STR_VEHICLE_STATUS_LEAVING; break; } - /* FALL THROUGH, if aircraft. Does this even happen? */ - + FALLTHROUGH; default: if (v->GetNumManualOrders() == 0) { str = STR_VEHICLE_STATUS_NO_ORDERS_VEL; diff --git a/src/vehiclelist.cpp b/src/vehiclelist.cpp index 7b4d3d5b56..11af523ba1 100644 --- a/src/vehiclelist.cpp +++ b/src/vehiclelist.cpp @@ -1,4 +1,4 @@ -/* $Id: vehiclelist.cpp 27677 2016-11-05 19:16:59Z frosch $ */ +/* $Id: vehiclelist.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -156,7 +156,7 @@ bool GenerateVehicleSortList(VehicleList *list, const VehicleListIdentifier &vli } break; } - /* FALL THROUGH */ + FALLTHROUGH; case VL_STANDARD: FOR_ALL_VEHICLES(v) { diff --git a/src/video/cocoa/event.mm b/src/video/cocoa/event.mm index e986634ce3..3ff7f856c9 100644 --- a/src/video/cocoa/event.mm +++ b/src/video/cocoa/event.mm @@ -1,4 +1,4 @@ -/* $Id: event.mm 27167 2015-02-22 23:06:45Z frosch $ */ +/* $Id: event.mm 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -610,7 +610,7 @@ static bool QZ_PollEvent() * the mouse position programmatically, which would trigger OS X to show * the default arrow cursor if the events are propagated. */ if (_cursor.fix_at) break; - /* FALL THROUGH */ + FALLTHROUGH; default: [ NSApp sendEvent:event ]; diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index daee92b02d..47d7e012e4 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -1,4 +1,4 @@ -/* $Id: win32_v.cpp 27940 2017-12-11 19:24:46Z frosch $ */ +/* $Id: win32_v.cpp 27935 2017-12-09 19:21:45Z michi_cc $ */ /* * This file is part of OpenTTD. @@ -684,7 +684,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP case WM_PALETTECHANGED: if ((HWND)wParam == hwnd) return 0; - /* FALL THROUGH */ + FALLTHROUGH; case WM_QUERYNEWPALETTE: { HDC hDC = GetWindowDC(hwnd); diff --git a/src/viewport.cpp b/src/viewport.cpp index d7cac4e850..21dd7f19e6 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -1,4 +1,4 @@ -/* $Id: viewport.cpp 27344 2015-07-28 08:16:52Z alberth $ */ +/* $Id: viewport.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -2633,8 +2633,8 @@ static int CalcHeightdiff(HighLightStyle style, uint distance, TileIndex start_t byte style_t = (byte)(TileX(end_tile) > TileX(start_tile)); start_tile = TILE_ADD(start_tile, ToTileIndexDiff(heightdiff_area_by_dir[style_t])); end_tile = TILE_ADD(end_tile, ToTileIndexDiff(heightdiff_area_by_dir[2 + style_t])); - /* FALL THROUGH */ } + FALLTHROUGH; case HT_POINT: h0 = TileHeight(start_tile); @@ -2979,7 +2979,7 @@ void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method) case VPM_X_LIMITED: // Drag in X direction (limited size). limit = (_thd.sizelimit - 1) * TILE_SIZE; - /* FALL THROUGH */ + FALLTHROUGH; case VPM_FIX_X: // drag in Y direction x = sx; @@ -2988,7 +2988,7 @@ void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method) case VPM_Y_LIMITED: // Drag in Y direction (limited size). limit = (_thd.sizelimit - 1) * TILE_SIZE; - /* FALL THROUGH */ + FALLTHROUGH; case VPM_FIX_Y: // drag in X direction y = sy; @@ -3026,7 +3026,7 @@ calc_heightdiff_single_direction:; limit = (_thd.sizelimit - 1) * TILE_SIZE; x = sx + Clamp(x - sx, -limit, limit); y = sy + Clamp(y - sy, -limit, limit); - /* FALL THROUGH */ + FALLTHROUGH; case VPM_X_AND_Y: // drag an X by Y area if (_settings_client.gui.measure_tooltip) { diff --git a/src/viewport_sprite_sorter.h b/src/viewport_sprite_sorter.h index a34036efe2..a430f868cf 100644 --- a/src/viewport_sprite_sorter.h +++ b/src/viewport_sprite_sorter.h @@ -1,4 +1,4 @@ -/* $Id: viewport_sprite_sorter.h 26205 2014-01-02 16:48:16Z rubidium $ */ +/* $Id: viewport_sprite_sorter.h 27916 2017-09-24 13:35:27Z frosch $ */ /* * This file is part of OpenTTD. @@ -37,7 +37,7 @@ struct ParentSpriteToDraw { int32 left; ///< minimal screen X coordinate of sprite (= x + sprite->x_offs), reference point for child sprites int32 top; ///< minimal screen Y coordinate of sprite (= y + sprite->y_offs), reference point for child sprites - int first_child; ///< the first child to draw. + int32 first_child; ///< the first child to draw. bool comparison_done; ///< Used during sprite sorting: true if sprite has been compared with all other sprites }; diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index e0ed78c8a6..3c6a601f28 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: water_cmd.cpp 27254 2015-04-26 10:50:36Z frosch $ */ +/* $Id: water_cmd.cpp 27973 2018-03-05 22:57:49Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -73,7 +73,7 @@ static const uint8 _flood_from_dirs[] = { */ static inline void MarkTileDirtyIfCanalOrRiver(TileIndex tile) { - if (IsTileType(tile, MP_WATER) && (IsCanal(tile) || IsRiver(tile))) MarkTileDirtyByTile(tile); + if (IsValidTile(tile) && IsTileType(tile, MP_WATER) && (IsCanal(tile) || IsRiver(tile))) MarkTileDirtyByTile(tile); } /** @@ -437,7 +437,7 @@ CommandCost CmdBuildCanal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 MakeSea(tile); break; } - /* FALL THROUGH */ + FALLTHROUGH; default: MakeCanal(tile, _current_company, Random()); @@ -1015,7 +1015,7 @@ FloodingBehaviour GetFloodingBehaviour(TileIndex tile) Slope tileh = GetTileSlope(tile); return (IsSlopeWithOneCornerRaised(tileh) ? FLOOD_ACTIVE : FLOOD_DRYUP); } - /* FALL THROUGH */ + FALLTHROUGH; case MP_STATION: case MP_INDUSTRY: case MP_OBJECT: @@ -1064,7 +1064,7 @@ void DoFloodTile(TileIndex target) flooded = true; break; } - /* FALL THROUGH */ + FALLTHROUGH; case MP_CLEAR: if (DoCommand(target, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR).Succeeded()) { diff --git a/src/waypoint_cmd.cpp b/src/waypoint_cmd.cpp index 361ebbac17..93ab44ab24 100644 --- a/src/waypoint_cmd.cpp +++ b/src/waypoint_cmd.cpp @@ -1,4 +1,4 @@ -/* $Id: waypoint_cmd.cpp 27862 2017-05-03 20:05:52Z frosch $ */ +/* $Id: waypoint_cmd.cpp 27785 2017-03-12 15:32:40Z peter1138 $ */ /* * This file is part of OpenTTD. diff --git a/src/widget.cpp b/src/widget.cpp index fae5491184..aad94fd335 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -1,4 +1,4 @@ -/* $Id: widget.cpp 27863 2017-05-03 20:09:51Z frosch $ */ +/* $Id: widget.cpp 27893 2017-08-13 18:38:42Z frosch $ */ /* * This file is part of OpenTTD. @@ -221,7 +221,8 @@ static inline void DrawImageButtons(const Rect &r, WidgetType type, Colours colo DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, (clicked) ? FR_LOWERED : FR_NONE); if ((type & WWT_MASK) == WWT_IMGBTN_2 && clicked) img++; // Show different image when clicked for #WWT_IMGBTN_2. - DrawSprite(img, PAL_NONE, r.left + WD_IMGBTN_LEFT + clicked, r.top + WD_IMGBTN_TOP + clicked); + Dimension d = GetSpriteSize(img); + DrawSprite(img, PAL_NONE, CenterBounds(r.left, r.right, d.width) + clicked, CenterBounds(r.top, r.bottom, d.height) + clicked); } /** @@ -459,8 +460,7 @@ static inline void DrawFrame(const Rect &r, Colours colour, StringID str) */ static inline void DrawShadeBox(const Rect &r, Colours colour, bool clicked) { - DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, (clicked) ? FR_LOWERED : FR_NONE); - DrawSprite((clicked) ? SPR_WINDOW_SHADE : SPR_WINDOW_UNSHADE, PAL_NONE, r.left + WD_SHADEBOX_LEFT + clicked, r.top + WD_SHADEBOX_TOP + clicked); + DrawImageButtons(r, WWT_SHADEBOX, colour, clicked, clicked ? SPR_WINDOW_SHADE: SPR_WINDOW_UNSHADE); } /** @@ -471,8 +471,7 @@ static inline void DrawShadeBox(const Rect &r, Colours colour, bool clicked) */ static inline void DrawStickyBox(const Rect &r, Colours colour, bool clicked) { - DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, (clicked) ? FR_LOWERED : FR_NONE); - DrawSprite((clicked) ? SPR_PIN_UP : SPR_PIN_DOWN, PAL_NONE, r.left + WD_STICKYBOX_LEFT + clicked, r.top + WD_STICKYBOX_TOP + clicked); + DrawImageButtons(r, WWT_STICKYBOX, colour, clicked, clicked ? SPR_PIN_UP : SPR_PIN_DOWN); } /** @@ -483,8 +482,7 @@ static inline void DrawStickyBox(const Rect &r, Colours colour, bool clicked) */ static inline void DrawDefSizeBox(const Rect &r, Colours colour, bool clicked) { - DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, (clicked) ? FR_LOWERED : FR_NONE); - DrawSprite(SPR_WINDOW_DEFSIZE, PAL_NONE, r.left + WD_DEFSIZEBOX_LEFT + clicked, r.top + WD_DEFSIZEBOX_TOP + clicked); + DrawImageButtons(r, WWT_DEFSIZEBOX, colour, clicked, SPR_WINDOW_DEFSIZE); } /** @@ -495,8 +493,7 @@ static inline void DrawDefSizeBox(const Rect &r, Colours colour, bool clicked) */ static inline void DrawDebugBox(const Rect &r, Colours colour, bool clicked) { - DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, (clicked) ? FR_LOWERED : FR_NONE); - DrawSprite(SPR_WINDOW_DEBUG, PAL_NONE, r.left + WD_DEBUGBOX_LEFT + clicked, r.top + WD_DEBUGBOX_TOP + clicked); + DrawImageButtons(r, WWT_DEBUGBOX, colour, clicked, SPR_WINDOW_DEBUG); } /** @@ -528,7 +525,9 @@ static inline void DrawResizeBox(const Rect &r, Colours colour, bool at_left, bo static inline void DrawCloseBox(const Rect &r, Colours colour) { if (colour != COLOUR_WHITE) DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, FR_NONE); - DrawSprite(SPR_CLOSEBOX, (colour != COLOUR_WHITE ? TC_BLACK : TC_SILVER) | (1 << PALETTE_TEXT_RECOLOUR), r.left + WD_CLOSEBOX_LEFT, r.top + WD_CLOSEBOX_TOP); + Dimension d = GetSpriteSize(SPR_CLOSEBOX); + int s = UnScaleGUI(1); /* Offset to account for shadow of SPR_CLOSEBOX */ + DrawSprite(SPR_CLOSEBOX, (colour != COLOUR_WHITE ? TC_BLACK : TC_SILVER) | (1 << PALETTE_TEXT_RECOLOUR), CenterBounds(r.left, r.right, d.width - s), CenterBounds(r.top, r.bottom, d.height - s)); } /** @@ -2288,8 +2287,8 @@ void NWidgetLeaf::SetupSmallestSize(Window *w, bool init_array) Dimension sprite_size = GetSpriteSize(_current_text_dir == TD_RTL ? SPR_IMG_DELETE_RIGHT : SPR_IMG_DELETE_LEFT); size.width = max(size.width, 30 + sprite_size.width); size.height = max(sprite_size.height, GetStringBoundingBox("_").height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM); - /* FALL THROUGH */ } + FALLTHROUGH; case WWT_PUSHBTN: { static const Dimension extra = {WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM}; padding = &extra; diff --git a/src/widget_type.h b/src/widget_type.h index 95af708b3a..b0b3d8c85f 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -1,4 +1,4 @@ -/* $Id: widget_type.h 26971 2014-10-06 19:16:29Z rubidium $ */ +/* $Id: widget_type.h 27900 2017-08-27 11:48:38Z frosch $ */ /* * This file is part of OpenTTD. @@ -779,13 +779,13 @@ public: static void InvalidateDimensionCache(); static Dimension dropdown_dimension; ///< Cached size of a dropdown widget. + static Dimension resizebox_dimension; ///< Cached size of a resizebox widget. + static Dimension closebox_dimension; ///< Cached size of a closebox widget. private: static Dimension shadebox_dimension; ///< Cached size of a shadebox widget. static Dimension debugbox_dimension; ///< Cached size of a debugbox widget. static Dimension defsizebox_dimension; ///< Cached size of a defsizebox widget. static Dimension stickybox_dimension; ///< Cached size of a stickybox widget. - static Dimension resizebox_dimension; ///< Cached size of a resizebox widget. - static Dimension closebox_dimension; ///< Cached size of a closebox widget. }; /** diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index be9c3d243a..856cdcaa3f 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -1,4 +1,4 @@ -/* $Id: dropdown.cpp 27863 2017-05-03 20:09:51Z frosch $ */ +/* $Id: dropdown.cpp 27820 2017-03-23 20:07:59Z peter1138 $ */ /* * This file is part of OpenTTD. diff --git a/src/widgets/group_widget.h b/src/widgets/group_widget.h index eaa0a6f3a8..272616bb2e 100644 --- a/src/widgets/group_widget.h +++ b/src/widgets/group_widget.h @@ -1,4 +1,4 @@ -/* $Id: group_widget.h 23600 2011-12-19 20:46:17Z truebrain $ */ +/* $Id: group_widget.h 27822 2017-03-24 07:33:31Z peter1138 $ */ /* * This file is part of OpenTTD. @@ -32,6 +32,7 @@ enum GroupListWidgets { WID_GL_DELETE_GROUP, ///< Delete group button. WID_GL_RENAME_GROUP, ///< Rename group button. WID_GL_REPLACE_PROTECTION, ///< Replace protection button. + WID_GL_INFO, ///< Group info. }; #endif /* WIDGETS_GROUP_WIDGET_H */ diff --git a/src/window.cpp b/src/window.cpp index 6086d2aaaa..789f5ab6b9 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1,4 +1,4 @@ -/* $Id: window.cpp 27712 2016-12-25 17:56:57Z frosch $ */ +/* $Id: window.cpp 27934 2017-12-09 19:21:41Z michi_cc $ */ /* * This file is part of OpenTTD. @@ -139,7 +139,7 @@ int16 WindowDesc::GetDefaultHeight() const void WindowDesc::LoadFromConfig() { IniFile *ini = new IniFile(); - ini->LoadFromDisk(_windows_file, BASE_DIR); + ini->LoadFromDisk(_windows_file, NO_DIRECTORY); for (WindowDesc **it = _window_descs->Begin(); it != _window_descs->End(); ++it) { if ((*it)->ini_key == NULL) continue; IniLoadWindowSettings(ini, (*it)->ini_key, *it); @@ -165,7 +165,7 @@ void WindowDesc::SaveToConfig() QSortT(_window_descs->Begin(), _window_descs->Length(), DescSorter); IniFile *ini = new IniFile(); - ini->LoadFromDisk(_windows_file, BASE_DIR); + ini->LoadFromDisk(_windows_file, NO_DIRECTORY); for (WindowDesc **it = _window_descs->Begin(); it != _window_descs->End(); ++it) { if ((*it)->ini_key == NULL) continue; IniSaveWindowSettings(ini, (*it)->ini_key, *it); @@ -772,7 +772,12 @@ static void DispatchRightClickEvent(Window *w, int x, int y) if (w->OnRightClick(pt, wid->index)) return; } - if (_settings_client.gui.hover_delay_ms == 0 && wid->tool_tip != 0) GuiShowTooltips(w, wid->tool_tip, 0, NULL, TCC_RIGHT_CLICK); + /* Right-click close is enabled and there is a closebox */ + if (_settings_client.gui.right_mouse_wnd_close && w->nested_root->GetWidgetOfType(WWT_CLOSEBOX)) { + delete w; + } else if (_settings_client.gui.hover_delay_ms == 0 && wid->tool_tip != 0) { + GuiShowTooltips(w, wid->tool_tip, 0, NULL, TCC_RIGHT_CLICK); + } } /** @@ -1259,39 +1264,46 @@ static inline bool IsVitalWindow(const Window *w) * Get the z-priority for a given window. This is used in comparison with other z-priority values; * a window with a given z-priority will appear above other windows with a lower value, and below * those with a higher one (the ordering within z-priorities is arbitrary). - * @param w The window to get the z-priority for - * @pre w->window_class != WC_INVALID + * @param wc The window class of window to get the z-priority for + * @pre wc != WC_INVALID * @return The window's z-priority */ -static uint GetWindowZPriority(const Window *w) +static uint GetWindowZPriority(WindowClass wc) { - assert(w->window_class != WC_INVALID); + assert(wc != WC_INVALID); uint z_priority = 0; - switch (w->window_class) { + switch (wc) { case WC_ENDSCREEN: ++z_priority; + FALLTHROUGH; case WC_HIGHSCORE: ++z_priority; + FALLTHROUGH; case WC_TOOLTIPS: ++z_priority; + FALLTHROUGH; case WC_DROPDOWN_MENU: ++z_priority; + FALLTHROUGH; case WC_MAIN_TOOLBAR: case WC_STATUS_BAR: ++z_priority; + FALLTHROUGH; case WC_OSK: ++z_priority; + FALLTHROUGH; case WC_QUERY_STRING: case WC_SEND_NETWORK_MSG: ++z_priority; + FALLTHROUGH; case WC_ERRMSG: case WC_CONFIRM_POPUP_QUERY: @@ -1299,6 +1311,7 @@ static uint GetWindowZPriority(const Window *w) case WC_NETWORK_STATUS_WINDOW: case WC_SAVE_PRESET: ++z_priority; + FALLTHROUGH; case WC_GENERATE_LANDSCAPE: case WC_SAVELOAD: @@ -1310,15 +1323,19 @@ static uint GetWindowZPriority(const Window *w) case WC_AI_SETTINGS: case WC_TEXTFILE: ++z_priority; + FALLTHROUGH; case WC_CONSOLE: ++z_priority; + FALLTHROUGH; case WC_NEWS_WINDOW: ++z_priority; + FALLTHROUGH; default: ++z_priority; + FALLTHROUGH; case WC_MAIN_WINDOW: return z_priority; @@ -1341,11 +1358,11 @@ static void AddWindowToZOrdering(Window *w) /* Search down the z-ordering for its location. */ Window *v = _z_front_window; uint last_z_priority = UINT_MAX; - while (v != NULL && (v->window_class == WC_INVALID || GetWindowZPriority(v) > GetWindowZPriority(w))) { + while (v != NULL && (v->window_class == WC_INVALID || GetWindowZPriority(v->window_class) > GetWindowZPriority(w->window_class))) { if (v->window_class != WC_INVALID) { /* Sanity check z-ordering, while we're at it. */ - assert(last_z_priority >= GetWindowZPriority(v)); - last_z_priority = GetWindowZPriority(v); + assert(last_z_priority >= GetWindowZPriority(v->window_class)); + last_z_priority = GetWindowZPriority(v->window_class); } v = v->z_back; @@ -1538,16 +1555,16 @@ void Window::FindWindowPlacementAndResize(int def_width, int def_height) * @param top Top edge of the rectangle * @param width Width of the rectangle * @param height Height of the rectangle + * @param toolbar_y Height of main toolbar * @param pos If rectangle is good, use this parameter to return the top-left corner of the new window * @return Boolean indication that the rectangle is a good place for the new window */ -static bool IsGoodAutoPlace1(int left, int top, int width, int height, Point &pos) +static bool IsGoodAutoPlace1(int left, int top, int width, int height, int toolbar_y, Point &pos) { int right = width + left; int bottom = height + top; - const Window *main_toolbar = FindWindowByClass(WC_MAIN_TOOLBAR); - if (left < 0 || (main_toolbar != NULL && top < main_toolbar->height) || right > _screen.width || bottom > _screen.height) return false; + if (left < 0 || top < toolbar_y || right > _screen.width || bottom > _screen.height) return false; /* Make sure it is not obscured by any window. */ const Window *w; @@ -1575,17 +1592,25 @@ static bool IsGoodAutoPlace1(int left, int top, int width, int height, Point &po * @param top Top edge of the rectangle * @param width Width of the rectangle * @param height Height of the rectangle + * @param toolbar_y Height of main toolbar * @param pos If rectangle is good, use this parameter to return the top-left corner of the new window * @return Boolean indication that the rectangle is a good place for the new window */ -static bool IsGoodAutoPlace2(int left, int top, int width, int height, Point &pos) +static bool IsGoodAutoPlace2(int left, int top, int width, int height, int toolbar_y, Point &pos) { + bool rtl = _current_text_dir == TD_RTL; + /* Left part of the rectangle may be at most 1/4 off-screen, * right part of the rectangle may be at most 1/2 off-screen */ - if (left < -(width >> 2) || left > _screen.width - (width >> 1)) return false; + if (rtl) { + if (left < -(width >> 1) || left > _screen.width - (width >> 2)) return false; + } else { + if (left < -(width >> 2) || left > _screen.width - (width >> 1)) return false; + } + /* Bottom part of the rectangle may be at most 1/4 off-screen */ - if (top < 22 || top > _screen.height - (height >> 2)) return false; + if (top < toolbar_y || top > _screen.height - (height >> 2)) return false; /* Make sure it is not obscured by any window. */ const Window *w; @@ -1615,11 +1640,14 @@ static Point GetAutoPlacePosition(int width, int height) { Point pt; + bool rtl = _current_text_dir == TD_RTL; + /* First attempt, try top-left of the screen */ const Window *main_toolbar = FindWindowByClass(WC_MAIN_TOOLBAR); - if (IsGoodAutoPlace1(0, main_toolbar != NULL ? main_toolbar->height + 2 : 2, width, height, pt)) return pt; + const int toolbar_y = main_toolbar != NULL ? main_toolbar->height : 0; + if (IsGoodAutoPlace1(rtl ? _screen.width - width : 0, toolbar_y, width, height, toolbar_y, pt)) return pt; - /* Second attempt, try around all existing windows with a distance of 2 pixels. + /* Second attempt, try around all existing windows. * The new window must be entirely on-screen, and not overlap with an existing window. * Eight starting points are tried, two at each corner. */ @@ -1627,39 +1655,41 @@ static Point GetAutoPlacePosition(int width, int height) FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == WC_MAIN_WINDOW) continue; - if (IsGoodAutoPlace1(w->left + w->width + 2, w->top, width, height, pt)) return pt; - if (IsGoodAutoPlace1(w->left - width - 2, w->top, width, height, pt)) return pt; - if (IsGoodAutoPlace1(w->left, w->top + w->height + 2, width, height, pt)) return pt; - if (IsGoodAutoPlace1(w->left, w->top - height - 2, width, height, pt)) return pt; - if (IsGoodAutoPlace1(w->left + w->width + 2, w->top + w->height - height, width, height, pt)) return pt; - if (IsGoodAutoPlace1(w->left - width - 2, w->top + w->height - height, width, height, pt)) return pt; - if (IsGoodAutoPlace1(w->left + w->width - width, w->top + w->height + 2, width, height, pt)) return pt; - if (IsGoodAutoPlace1(w->left + w->width - width, w->top - height - 2, width, height, pt)) return pt; + if (IsGoodAutoPlace1(w->left + w->width, w->top, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace1(w->left - width, w->top, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace1(w->left, w->top + w->height, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace1(w->left, w->top - height, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace1(w->left + w->width, w->top + w->height - height, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace1(w->left - width, w->top + w->height - height, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace1(w->left + w->width - width, w->top + w->height, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace1(w->left + w->width - width, w->top - height, width, height, toolbar_y, pt)) return pt; } - /* Third attempt, try around all existing windows with a distance of 2 pixels. + /* Third attempt, try around all existing windows. * The new window may be partly off-screen, and must not overlap with an existing window. * Only four starting points are tried. */ FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->window_class == WC_MAIN_WINDOW) continue; - if (IsGoodAutoPlace2(w->left + w->width + 2, w->top, width, height, pt)) return pt; - if (IsGoodAutoPlace2(w->left - width - 2, w->top, width, height, pt)) return pt; - if (IsGoodAutoPlace2(w->left, w->top + w->height + 2, width, height, pt)) return pt; - if (IsGoodAutoPlace2(w->left, w->top - height - 2, width, height, pt)) return pt; + if (IsGoodAutoPlace2(w->left + w->width, w->top, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace2(w->left - width, w->top, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace2(w->left, w->top + w->height, width, height, toolbar_y, pt)) return pt; + if (IsGoodAutoPlace2(w->left, w->top - height, width, height, toolbar_y, pt)) return pt; } - /* Fourth and final attempt, put window at diagonal starting from (0, 24), try multiples - * of (+5, +5) + /* Fourth and final attempt, put window at diagonal starting from (0, toolbar_y), try multiples + * of the closebox */ - int left = 0, top = 24; + int left = rtl ? _screen.width - width : 0, top = toolbar_y; + int offset_x = rtl ? -(int)NWidgetLeaf::closebox_dimension.width : (int)NWidgetLeaf::closebox_dimension.width; + int offset_y = max(NWidgetLeaf::closebox_dimension.height, FONT_HEIGHT_NORMAL + WD_CAPTIONTEXT_TOP + WD_CAPTIONTEXT_BOTTOM); restart: FOR_ALL_WINDOWS_FROM_BACK(w) { if (w->left == left && w->top == top) { - left += 5; - top += 5; + left += offset_x; + top += offset_y; goto restart; } } @@ -1708,16 +1738,31 @@ static Point LocalGetWindowPlacement(const WindowDesc *desc, int16 sm_width, int int16 default_width = max(desc->GetDefaultWidth(), sm_width); int16 default_height = max(desc->GetDefaultHeight(), sm_height); - if (desc->parent_cls != 0 /* WC_MAIN_WINDOW */ && - (w = FindWindowById(desc->parent_cls, window_number)) != NULL && - w->left < _screen.width - 20 && w->left > -60 && w->top < _screen.height - 20) { - - pt.x = w->left + ((desc->parent_cls == WC_BUILD_TOOLBAR || desc->parent_cls == WC_SCEN_LAND_GEN) ? 0 : 10); - if (pt.x > _screen.width + 10 - default_width) { - pt.x = (_screen.width + 10 - default_width) - 20; + if (desc->parent_cls != 0 /* WC_MAIN_WINDOW */ && (w = FindWindowById(desc->parent_cls, window_number)) != NULL) { + bool rtl = _current_text_dir == TD_RTL; + if (desc->parent_cls == WC_BUILD_TOOLBAR || desc->parent_cls == WC_SCEN_LAND_GEN) { + pt.x = w->left + (rtl ? w->width - default_width : 0); + pt.y = w->top + w->height; + return pt; + } else { + /* Position child window with offset of closebox, but make sure that either closebox or resizebox is visible + * - Y position: closebox of parent + closebox of child + statusbar + * - X position: closebox on left/right, resizebox on right/left (depending on ltr/rtl) + */ + int indent_y = max(NWidgetLeaf::closebox_dimension.height, FONT_HEIGHT_NORMAL + WD_CAPTIONTEXT_TOP + WD_CAPTIONTEXT_BOTTOM); + if (w->top + 3 * indent_y < _screen.height) { + pt.y = w->top + indent_y; + int indent_close = NWidgetLeaf::closebox_dimension.width; + int indent_resize = NWidgetLeaf::resizebox_dimension.width; + if (_current_text_dir == TD_RTL) { + pt.x = max(w->left + w->width - default_width - indent_close, 0); + if (pt.x + default_width >= indent_close && pt.x + indent_resize <= _screen.width) return pt; + } else { + pt.x = min(w->left + indent_close, _screen.width - default_width); + if (pt.x + default_width >= indent_resize && pt.x + indent_close <= _screen.width) return pt; + } + } } - pt.y = w->top + ((desc->parent_cls == WC_BUILD_TOOLBAR || desc->parent_cls == WC_SCEN_LAND_GEN) ? w->height : 10); - return pt; } switch (desc->default_pos) { @@ -2825,11 +2870,12 @@ static void MouseLoop(MouseClick click, int mousewheel) switch (click) { case MC_DOUBLE_LEFT: case MC_LEFT: - if (!HandleViewportClicked(vp, x, y) && - !(w->flags & WF_DISABLE_VP_SCROLL) && + if (HandleViewportClicked(vp, x, y)) return; + if (!(w->flags & WF_DISABLE_VP_SCROLL) && _settings_client.gui.left_mouse_btn_scrolling) { _scrolling_viewport = true; _cursor.fix_at = false; + return; } break; @@ -2841,13 +2887,16 @@ static void MouseLoop(MouseClick click, int mousewheel) /* clear 2D scrolling caches before we start a 2D scroll */ _cursor.h_wheel = 0; _cursor.v_wheel = 0; + return; } break; default: break; } - } else { + } + + if (vp == NULL || (w->flags & WF_DISABLE_VP_SCROLL)) { switch (click) { case MC_LEFT: case MC_DOUBLE_LEFT: @@ -2858,7 +2907,7 @@ static void MouseLoop(MouseClick click, int mousewheel) if (!scrollwheel_scrolling || w == NULL || w->window_class != WC_SMALLMAP) break; /* We try to use the scrollwheel to scroll since we didn't touch any of the buttons. * Simulate a right button click so we can get started. */ - /* FALL THROUGH */ + FALLTHROUGH; case MC_RIGHT: DispatchRightClickEvent(w, x - w->left, y - w->top); break;